Java对象头
1、存储结构
-
32位的JVM Mark Word的存储结构为:
锁状态 25bit 4bit 1bit是否是偏向锁 2bit标志位 无锁状态 对象的HashCode 对象的分代年龄 0 01 在同步的时候获取对象的monnitor,即获取到对象的的锁。锁,无非就是一个对对象的标志,这个标志存放在Java对象的对象头。如上表格所示,Mark Word会默认存放HashCode、年龄值、以及锁标志位。
2、锁的状态
-
JavaSE1.6中,锁一共有四种状态,级别从低到高依次是:
- 无锁状态
- 偏向锁状态
- 轻量级锁状态
- 重量级锁状态
-
这几个状态会随着竞争情况逐渐升级,锁可以升级,但是不能够降级,这种能升级但不能降级的策略主要是为了 提高获得锁和释放锁的效率。
-
MarkWord变化图