Hotspot虚拟机
对象头(Header)
对象标记
mark-word:对象标记字段占4个字节,用于存储一些列的标记位,比如:哈希值、轻量级锁的标 记位,偏向锁标记位、分代年龄等。 Klass Pointer:Class对象的类型指针,Jdk1.8默认开启指针压缩后为4字节,关闭指针压缩( - XX:-UseCompressedOops )后,长度为8字节。其指向的位置是对象对应的Class对象(其对应的 元数据对象)的内存地址。
hashcode
分代年龄
同步锁标记
偏向锁标记
偏向锁持有线程ID
monitor()
ObjectMoniyor,争抢锁的实现逻辑
类元数据
实例数据(Instance Data)
包括对象的所有成员变量,大小由各个成员变量决定,比如:byte占1个字节8比 特位、int占4个字节32比特位。
对齐填充(Padding)
最后这段空间补全并非必须,仅仅为了起到占位符的作用。由于HotSpot虚拟机的内存管理系统要求对象起始地址必须是8字节的整数倍,所以对象头正好是8字节的倍数。因此当对象实例数据部分没有对齐的话,就需要通过对齐填充来补全