HotSpot虚拟机对象探秘
对象的内存布局
在 HotSpot 虚拟机中,对象的内存布局分为以下 3 块区域:
- 对象头(Header)
- 实例数据(Instance Data)
- 对齐填充(Padding)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OaNnweDs-1647062625954)(evernotecid://DF961740-2AB0-48AB-AAE7-53BB9D286C7A/appyinxiangcom/12131181/ENResource/p1233)]
对象头
对象头记录了对象在运行过程中所需要使用的一些数据:
- 哈希码
- GC 分代年龄
- 锁状态标志
- 线程持有的锁
- 偏向线程 ID
- 偏向时间戳
对象头可能包含类型指针,通过该指针能确定对象属于哪个类。如果对象是一个数组,那么对象头还会包括数组长度。
实例数据
实例数据部分就是成员变量的值,其中包括父类成员变量和本类成员变量。
对齐填充
用于确保对象的总长度为 8 字节的整