简述JVM对象头包含哪些部分 ?
参考答案:
JVM对象头包含以下部分:
- Mark Word:用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。这部分数据的长度在32位和64位的虚拟机中分别为32个和64个Bits。
- 类型指针:也称为元数据指针,是对象指向它的类的元数据的指针。虚拟机通过这个指针来确定这个对象是哪个类的实例。
- 数组长度:只有数组对象才有这部分。因为虚拟机可以通过普通Java对象的元数据信息确定Java对象的大小,但从数组的元数据中无法确定数组的大小,所以需要在对象头中额外记录数组长度。
综上所述,JVM对象头由Mark Word、类型指针和数组长度(仅数组对象)三部分组成。这些部分共同支持了JVM在运行时对对象的各种操作和管理。