对象头
对象头里有啥
- MarkWord
锁状态 | 25bit | 4bit | 1bit | 2bit | |
---|---|---|---|---|---|
23bit | 2bit | 是否偏向锁 | 锁标志位 | ||
无锁 | 对象的HashCode | 分代年龄 | 0 | 01 | |
偏向锁 | 线程ID | Epoch | 分代年龄 | 1 | 01 |
轻量级锁 | 指向栈中锁记录 | 的 | 指 | 针 | 00 |
重量级锁 | 指向重量级锁 | 的 | 指 | 针 | 10 |
GC标记 | 11 |
- 指向类的指针。该指针在32位JVM中的长度是32bit,在64位JVM中长度是64bit。
- 实例数据
- 对齐填充字节。因为JVM要求java的对象占的内存大小应该是8bit的倍数,所以后面有几个字节用于把对象的大小补齐至8bit的倍数