Java对象(Object实例)结构包括三部分:对象头、对象体和对齐
字节,具体如图所示

1.对象头
对象头包括三个字段,第一个字段叫作Mark Word(标记字),用
于存储自身运行时的数据,例如GC标志位、哈希码、锁状态等信息。
第二个字段叫作Class Pointer(类对象指针),用于存放方法区
Class对象的地址,虚拟机通过这个指针来确定这个对象是哪个类的实
例。
第三个字段叫作Array Length(数组长度)。如果对象是一个Java数
组,那么此字段必须有,用于记录数组长度的数据;如果对象不是一个
Java数组,那么此字段不存在,所以这是一个可选字段。
2.对象体
对象体包含对象的实例变量(成员变量),用于成员属性值,包括
父类的成员属性值。这部分内存按4字节对齐。
3.对齐字节
对齐字节也叫作填充对齐,其作用是用来保证Java对象所占内存字
节数为8的倍数HotSpot VM的内存管理要求对象起始地址必须是8字节的
整数倍。对象头本身是8的倍数,当对象的实例变量数据不是8的倍数
时,便需要填充数据来保证8字节的对齐