Java对象在jvm内存中的布局主要有三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)
一、对象头(Header)
对象头(Header)包括两个部分。
第一部分存储自身运行时数据,如:哈希码(Hash Code)、GC分代年龄、锁状态标志、线程持有锁、偏向线程id、偏向时间戳等。这部分官方称为“Mark Word”。
另一部分是类型指针,即对象指向它的类元数据的指针。虚拟机通过这个来确定这个对象是哪个类的实例。
二、实例数据(Instance Data)
实例数据(Instance Data),是存储对象真正的有效信息,也就是程序代码中所定义的各种类型字段内容。
三、对其填充(Padding)
对齐填充(Padding)并不是必须的,也没有特殊的含义,可以把这部分理解为占位符。