java多线程(六)---java对象头

移步java多线程系列文章

1 java对象头的长度

  • 如果对象是数组类型,则虚拟机用3个字宽(Word)存储对象头,
  • 如果对象是非数组类型,则用2字宽存储对象头。
  • 在32位虚拟机中,1字宽等于4字节,即32bit


    java多线程(六)---java对象头_第1张图片
    QQ截图20180725000350.png

2 java头对象的存储结构

Java对象头里的Mark Word里默认存储对象的HashCode、分代年龄和锁标记位

  • 32位JVM的Mark Word的默认存储结构


    QQ截图20180725001024.png
  • 在64位虚拟机下,Mark Word是64bit大小的,其存储结构


    QQ截图20180725001133.png

3 Mark Word的状态变化

在运行期间,Mark Word里存储的数据会随着锁标志位的变化而变化。

  • Mark Word可能变化为存储以下4种数据
java多线程(六)---java对象头_第2张图片
QQ截图20180725001225.png

参考

《java并发编程的艺术》

你可能感兴趣的:(java多线程(六)---java对象头)