1)对象头
1,存储对象自身的运行时数据,如哈希码、GC分代年龄、键状态标识、线程持有的锁、偏向线程ID、偏向时间戳,对象头信息时与对象自身定义的数据无关的额外存储成本
2,类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象时哪个类的实例。
2)实例数据,对象真正存储的有效信息,也是在程序代码中所定义的各种类型的字段内容,无论从父类继承下来的还是在子类中定义的,都需要记录下来。这个部分的存储顺序会受到虚拟机分配策略参数和字段在java源码中定义的顺序的影响,相同宽度的字段总被分配到一块。
3)对其填充,没有特殊含义,只是起着占位符的作用。由于HotSpot VM的自动内存管理系统要求对象的起始地址必须是8字节的整数倍,就是对象的大小必须是8字节的整数倍,当对象的实例数据部分没有对齐的时候,就需要对齐填充来补全。