在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。其中对其填充是为了保证对象是8字节的倍数!

其中对象头可以再次进行细分,分为对象标记(Mark Word) 和类元信息(类型指针),对于数组对象来说对象头又会多一个Length部分。在64位系统中,Mark Word占了8个字节,类型指针占了8个字节,一共是16个字节。

从openJDK的oop.hpp源码中可以看到:_mark字段是mark word,_metadata是类指针klass pointer,对象头(object header)即是由这两个字段组成.

可以发现哈希码、GC标记,GC次数,同步锁标记,偏向锁持有者都在Mark Word里面.
这些信息都是与对象自身定义无关的数据,所以Mar