`
百合不是茶
  • 浏览: 345615 次
社区版块
存档分类
最新评论

JAVA虚拟机对象的访问

阅读更多

 

      在java虚拟机中对象是怎么进行的,JAVA是面向对象语言,类和对象是JAVA 的灵魂,JAVA中最简单的一个访问也会涉及JAVA栈,JAVA堆,方法区三个重要的内存区域之间的关联

 

  如下面的这句代码;

      Object obj = new Object();

 

    在JAVA堆中创建对象 假设这句代码出现在方法体中,"Object objectRef” 这部分将会反映到Java栈的本地变量中,作为一个reference类型数据出现。而“new Object()”这部分将会反映到Java堆中,形成一块存储Object类型所有实例数据值的结构化内存,根据具体类型以及虚拟机实现的对象内存布局的不同,这块内存的长度是不固定。另外,在java堆中还必须包括能查找到此对象类型数据(如对象类型、父类、实现的接口、方法等)的地址信息,这些数据类型存储在方法区中。

 

 

    要操作对象就必须要使用reference类型来操作对象,虚拟机之规定了一个指向引用并没有定义通过什么方式定位,主流的是句柄和指针

 

 

 句柄访问方式:java堆中将划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据和类型数据各自的具体地址信息。

 


        
 

 

 

指针访问方式:reference变量中直接存储的就是对象的地址,而java堆对象一部分存储了对象实例数据,另外一部分存储了对象类型数据。

 

    
           
 

 

 

            两种访问优点;使用句柄访问方式最大好处就是reference中存储的是稳定的句柄地址,在对象移动时只需要改变句柄中的实例数据指针,而reference不需要改变。使用指针访问方式最大好处就是速度快,它节省了一次指针定位的时间开销,就虚拟机而言,它使用的是第二种方式(直接指针访问)。

  • 大小: 22.7 KB
  • 大小: 20.4 KB
0
0
分享到:
评论

相关推荐

    Java虚拟机中冷对象的研究_骆凡.caj

    和对象集合,它们为了快速访问而进行预加载 , 但它们可能包括很少被引用的对象。通过建立活跃性映射表去跟踪堆对象中的引用活 跃性,将其与设定的 t cold 相比较确定冷对象来对内存对象进行评估和识别,建立的访 问...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    《深入Java虚拟机(原书第2版)》,原书名《Inside the Java Virtual Machine,Second Edition》,作者:【美】Bill Venners,翻译:曹晓钢、蒋靖,出版社:机械工业出版社,ISBN:7111128052,出版日期:2003 年 9 ...

    深入Java虚拟机

    1.3.1 Java虚拟机 1.3.2 类装载器的体系结构 1.3.3 Java class文件 1.3.4 Java API 1.3.5 Java程序设计语言 1.4 Java体系结构的代价 1.5 结论 1.6 资源页 第2章 平台无关 2.1 为什么要平台...

    深入理解Java虚拟机精华知识点

    Java虚拟机有如下几个主要特点:首先,它的结构严谨,面向对象,能够摆脱硬件平台的束缚,实现了“一次编写,到处运行”的理想;其次,它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针...

    java虚拟机知识点整理

    自己看书整理的 java虚拟机精品知识点 java内存区域与内存溢出处理 虚拟机栈和本地方法栈区别 对象定位访问 垃圾收集器GC管理 虚拟机GC垃圾回收收集算法(内存回收方法论) 虚拟机GC垃圾回收收集器(内存回收具体实现...

    JVM-Java虚拟机

    资源概要:JVM基础知识;类加载子系统;运行时数据区;对象的创建流程与内存分配;...从广义上讲Java,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语言及其相关的程序都属于Java技术体系中的一员。

    深入java虚拟机第二版

    深入java虚拟机第二版 第1章 Java体系结构介绍 1.1 为什么使用Java 1.2 网络带来的挑战和机遇 1.3 体系结构 1.3.1 Java虚拟机 1.3.2 类装载器的体系结构 1.3.3 Java class文件 1.3.4 Java API 1.3.5 ...

    深入JAVA虚拟机(第2版)

    1.3.1 Java虚拟机 1.3.2 类装载器的体系结构 1.3.3 Java class文件 1.3.4 Java API 1.3.5 Java程序设计语言 1.4 Java体系结构的代价 1.5 结论 1.6 资源页 第2章 平台无关 2.1 为什么要平台...

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第20节Java虚拟机-高性能Java虚拟机00:02:58分钟 | 第21节Java虚拟机-TaobaoVM00:03:06分钟 | 第22节Java内存区域-简介00:07:56分钟 | 第23节Java内存区域-Java虚拟机栈00:12:04分钟 | 第24节Java内存区域-程序...

    钻研JAVA虚拟机 全面掌握JVM JAVA虚拟机深入浅出实战课程 视频附带课程代码

    ├─(2) 0802_【掌握】Java对象访问模式.mp4 ├─(3) 0803_【掌握】JIT即时编译器.mp4 ├─(4) 0804_【掌握】JVM堆内存结构.mp4 ├─(5) 0805_【掌握】新生代内存管理.mp4 ├─(6) 0806_【掌握】老年代内存管理.mp4 ...

    Java虚拟机

    2.3 HotSpot虚拟机对象探秘 2.3.1 对象的创建 2.3.2 对象的内存布局 2.3.3 对象的访问定位 2.4 实战:OutOfMemoryError异常 2.4.1 Java堆溢出 2.4.2 虚拟机栈和本地方法栈溢出 2.4.3 方法区和运行时常量池...

    Java虚拟机规范(Java SE 7)

    1.2 Java虚拟机 ................................................... 18 1.3 各章节提要 ..................................................... 19 1.4 说明 ....................................................

    Java支持库2.0#0版

    使用时,可直接通过“Java本地接口”的各类方法访问Java类库(即与“Java虚拟机”通信),由支持库本身自动完成“Java虚拟机”的创建和销毁。如果需要特别指定“用户类路径”或“本地库路径”,则必需在使用“Java...

    Java虚拟机规范(Java SE 7).pdf

    1.2 Java虚拟机 ................................................... 18 1.3 各章节提要 ..................................................... 19 1.4 说明 ....................................................

    Java支持库2.0#0版(静态版)

    使用时,可直接通过“Java本地接口”的各类方法访问Java类库(即与“Java虚拟机”通信),由支持库本身自动完成“Java虚拟机”的创建和销毁。如果需要特别指定“用户类路径”或“本地库路径”,则必需在使用“Java...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 29 2.2.7 直接内存 / 29 2.3 对象访问 / 30 2.4 实战:OutOfMemoryError异常 / 32 2.4.1 Java堆溢出 / 32 2.4.2 虚拟机栈和本地方法栈溢出 / 35 2.4.3 运行时常量池溢出 / 38 2.4.4 方法区溢出 / 39 2.4.5...

    易语言-Java支持库2.0#0版(静态版)

    使用时,可直接通过“Java本地接口”的各类方法访问Java类库(即与“Java虚拟机”通信),由支持库本身自动完成“Java虚拟机”的创建和销毁。如果需要特别指定“用户类路径”或“本地库路径”,则必需在使用“Java...

Global site tag (gtag.js) - Google Analytics