对象内存布局详解

对象内存布局详解

对象结构

对象头(Header)

  • Mark Word:哈希码、GC分代年龄、锁状态等
  • Klass Pointer:指向类元数据的指针
  • 数组长度(数组对象特有)

实例数据(Instance Data)

  • 父类继承的字段
  • 本类声明的字段

对齐填充(Padding)

  • 8字节对齐
  • 不是必须存在

对象创建过程

  1. 检查类是否加载
  2. 分配内存
  3. 初始化零值
  4. 设置对象头
  5. 执行

内存分配方式

  • 指针碰撞:规整内存
  • 空闲列表:不规整内存

总结

了解对象内存布局有助于理解对象创建过程和内存分配原理。