在我们常用的
Hotspot
虚拟机中,对象在内存中布局实际包含
3
个部分:
1.
对象头
2.
实例数据
3.
对齐填充
而对象头包含两部分内容,Mark Word
中的内容会随着锁标志位而发生变化,所以只说存储结构就好了。
1. 对象自身运行时所需的数据,也被称为
Mark Word
,也就是用于轻量级锁和偏向锁的关键点。具体的内容包含对象的hashcode
、分代年龄、轻量级锁指针、重量级锁指针、
GC
标记、偏向锁线程ID
、偏向锁时间戳。
2. 存储类型指针,也就是指向类的元数据的指针,通过这个指针才能确定对象是属于哪个类的实例。
如果是数组的话,则还包含了数组的长度