对象的内存布局

在HotSpot虚拟机中,对象在内存中存储的布局可分为三个部分:布局

  •  对象头、实例数据和对齐填充

对象头包括两个部分:线程

  • 第一部分用于存储对象自身的运行时数据,
    • 如哈希码、GC分代年龄、线程所持有的锁等。
    • 官方称之为“Mark Word”。
  • 第二个部分为是类型指针,
    • 即对象指向它的类元数据的指针,
    • 虚拟机经过这个指针来肯定这个对象是哪一个类的实例。

实例数据是对象真正存储的有效信息,指针

  • 也是程序代码中所定义的各类类型的字段内容。

对齐填充并非必然存在的,仅仅起着占位符的做用。对象

  • Hotpot VM要求对象起始地址必须是8字节的整数倍,
    • 对象头部分正好是8字节的倍数,
  • 因此当实例数据部分没有对齐时,须要经过对齐填充来对齐。

相关文章
相关标签/搜索