在HotSpot虚拟机,对象在内存中布局分为三块区域:

    • 对象头(Header)
    • 实例数据(Instance Data)
    • 对其填充(Padding)

    对象头
    对象头包括两部分信息:Mark Word && 类型指针
    Mark Word:存储对象自身运行时数据,Hash Code、GC分代年龄、线程持有的锁、偏向线程ID、偏向时间戳等。数据长度32bit/64bit(32位/64位虚拟机)
    类型指针: 对象指向它的类元数据的指针。如果对象是是一个Java数组,对象头必须记录数组长度。
    实例数据
    对象的有效信息,代码中定义的各种类型的字段内容
    对其填充
    对其填充不是必然存在的,仅仅是占位含义。保证对象大小是8字节的整数倍。