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

你可能感兴趣的:(3. 对象在内存中的布局)