深入理解Java虚拟机(2)-对象访问的两种方式
来源:互联网 发布:linux创建文件命令 编辑:程序博客网 时间:2024/06/16 06:29
Java语言中,对象访问实现:
Object obj = new Object();
假设该句代码出现在方法体中,
“Object obj”反映到Java栈的本地变量表中,作为一个reference类型数据出现。
“new Object()”反映到Java堆中,形成一块存储了Object类型所有实例数据值的结构化内存。
另外,在Java堆中必须包含能查找到此对象类型数据(如对象类型、父类、实现的接口、方法等)的地址信息,这些类型数据则存储在方法区中。
不同虚拟机实现的对象访问方式不同,主流的访问方式有两种:使用句柄和直接指针。
- 使用句柄访问方式,Java堆中会划分出一块内存作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据和类型数据各自的具体地址信息。如下图:
注:此图片来源于http://chenzhou123520.iteye.com/blog/1585224
使用句柄访问最大好处:reference中存储的是稳定的句柄地址,在对象被移动时只会改变句柄中的实例数据指针,而reference本身不需要被修改。
- 使用直接指针访问:reference中直接存储的是对象地址,如下图:
注:此图片来源于http://chenzhou123520.iteye.com/blog/1585224
使用直接指针访问最大好处:速度快,节省了一次指针定位的时间开销,对象访问在Java中非常频繁,开销积少成多后是非常可观的执行成本。
阅读全文
0 0
- 深入理解Java虚拟机(2)-对象访问的两种方式
- 深入理解java虚拟机(二)HotSpot Java对象创建,内存布局以及访问方式
- 深入理解Java虚拟机--对象访问
- 深入理解Java虚拟机(5)--对象的访问定位
- 深入理解Java虚拟机之对象的访问定位
- 深入理解java虚拟机 第2章(二):对象创建,内存布局,访问
- 《深入理解Java虚拟机》学习笔记(二)(Java对象的创建、内存布局和访问定位)
- Java虚拟机对象的创建-《深入理解Java虚拟机》读书笔记
- 深入理解Java虚拟机之对象的创建-内存布局-访问定位
- java中对象的两种访问方式
- 深入理解Java虚拟机(二)-对象分配、布局和访问
- js的对象属性的两种访问方式和对象的内存理解
- JAVA虚拟机对象内存布局和访问定位-《深入理解JAVA虚拟机》读书笔记
- 2.《深入理解Java虚拟机》Hotspot虚拟机中的对象创建与访问定位
- Java学习之【深入理解Java虚拟机---对象的创建】
- 《深入理解java虚拟机》读书笔记:Java对象的内存布局
- 深入理解Java虚拟机笔记---访问标志
- 探索深入理解java虚拟机之hotspot虚拟机对象(2)
- 统计在输入中每个值连续出现了多少次
- C#实现人脸识别【SqlHelper】
- 数据挖掘- Analysis
- 解读:FlowNet 2.0 evolution of optical flow estimation with deep networks
- 【Linux】Shell编程二(shell语法)
- 深入理解Java虚拟机(2)-对象访问的两种方式
- Java命名规范
- WPF之OpacityMask理解
- 【git】git简介
- 数据挖掘-数据规整
- linux shell 通配
- C#实现人脸识别【Users】
- 线性表的链式存储
- [Rcode]构造函数把数据中某项状态的持续时间转化为新的向量