对象头(Object Header)

HotSpot 虚拟机的对象头包括两部分信息:Mark Word(标记字段)和 Klass Pointer(类型指针)

标记字段

标记字段用于存储自身运行时数据,包括:Hash Code、GC分代年龄、锁状态表示、线程持有的锁、偏向线程ID、偏向时间戳...

此部分一般占用两个机器码,在32bit JVM中是64bit 在64JVM中是 128bit

如果对象是一个 Java 数组,那在对象头中还必须有一块用于记录数组长度的数据,因为虚拟机可以通过普通 Java 对象的元数据信息确定 Java 对象的大小,但是从数组的元数据中无法确定数组的大小。

类型指针

对象指向它的类元数据的指针,以确定这个对象是哪个实例

你可能感兴趣的:(对象头(Object Header))