Java虚拟机(HotSpot)对象
来源:互联网 发布:两个矩阵的协方差公式 编辑:程序博客网 时间:2024/05/16 06:49
对象内存布局
在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。
对象头包括两部分信息,第一部分用于存储对象自身的运行时数据,如HashCode、GC分代年龄、锁状态标志、线程持有锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机中分别为32bit和64bit,官方称它为“mark word”。对象头的另外一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。
实例数据是对象真正存储的有效信息,也是程序代码中所定义的各种类型的字段内容。
对齐填充并不是必然存在的,它仅仅起着占位符的作用。对象的大小必须是8字节的整数倍,当对象实例数据部分没有对齐时,就需要通过对齐填充来补全。
对象访问定位
建立对象时为了使用对象,java程序需要通过栈上的reference数据来操作对象的具体对象。目前主流的访问对象的方式有使用句柄和直接指针两种。
通过句柄访问对象:java堆中将会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息。(具有写优势。如垃圾回收后对象移动时只会改变句柄中的实例数据指针,而reference本身不需要修改)
通过直接指针访问对象(HotSpot采用的方式):java堆对象的布局中就必须考虑如何防止访问类型数据的相关信息,而reference中存放的直接就是对象地址。(具有读优势。节省了一次指针定位的时间开销)
0 0
- Java虚拟机(HotSpot)对象
- java虚拟机-HotSpot虚拟机对象
- (二)HotSpot虚拟机对象
- Java虚拟机(HotSpot)-对象:创建、内存布局、访问定位
- Java内存区域与HotSpot虚拟机对象
- Java虚拟机学习记录,HotSpot对象创建
- JVM(二):HotSpot虚拟机对象探秘
- HotSpot虚拟机对象探秘
- HotSpot虚拟机对象探秘
- HotSpot虚拟机对象探秘
- Hotspot虚拟机对象探秘
- JVM虚拟机-对象(HotSpot)
- HotSpot虚拟机对象
- HotSpot虚拟机对象
- HotSpot虚拟机对象探讨
- HotSpot虚拟机对象探秘
- HotSpot虚拟机对象探秘
- HotSpot虚拟机对象探秘
- http://codeforces.com/problemset/problem/712/C
- 选择排序
- hdu1285 确定比赛名次(拓扑排序)
- 旋转数组的最小数字
- PAT_A 1036. Boys vs Girls (25)
- Java虚拟机(HotSpot)对象
- 良心推荐十款堪称神器的软件
- Accelerated C++<4-4>
- Vue.js之devtools
- 19. 标准函数库
- 信息熵
- 【java】简单的双人五子棋
- Java基础之线程(1)
- 配置Ubuntu环境一些简记