3. 对象在内存中的布局
在HotSpot虚拟机中,对象在内存中的布局分为三块:对象头、示例数据、对齐填充。
1.对象头
包括两部分:Mark Word、类型指针、数组长度(if 数组对象)
(1)Mark Word:存储对象自身的运行时数据(哈希码、GC年龄、锁标志、持有的锁等)。被设计成非固定数据结构,根据对象状态占用内部空间。
(2)类型指针:对象指向它的类元数据的指针。虚拟机通过这个指针确定对象是哪个类的实例。
(3)数组长度:对于数组对象,对象头中必须有一块数据记录数组长度,因为JVM无法从数组的元数据确定数组的大小。
2.实例数据。
实例数据是对象真正存储的有效信息,就是代码中定义的各种类型的字段内容,包括从父类继承下来的和子类中定义的。
3.对齐填充
HotSpot虚拟机的自动内存管理系统要求对象起始地址必须是8字节的整数倍。当对象的实例数据部分没有对齐,用对齐填充补全。所以对齐填充不是必然存在的。
下一篇:判断对象是否存活算法
原文:https://blog.csdn.net/daniel_2046/article/details/80607471
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步