对象的内存布局
HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)、对齐填充(Padding)。
对象头包括两个部分信息:运行时数据、类型指针。
运行时数据:如哈希码、GC分布年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。
类型指针:即对象指向它的类元数据的指针。
实例数据:对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容。
对齐填充:并不是必然存在的,仅仅起着点位符的作用。HotShop VM 要求对象的大小必须是8字节的整数倍,而对象头部分正好是8字节的倍数,因此,当对象实例数据部分没有对齐时,就需要对齐填充来补全。