对象头、实例数据、对齐填充
- 对象标记(markOop _mark也就我们后面提到的Mark word)
- 元数据
- 无锁
- 偏向锁
- 轻量级锁
- 重量级锁
当使用了同步块但是没有线程去访问对象头锁状态为无锁。
- 在当前线程的栈帧里面创建一个存储LockRecord的空间
- 对象头中的Mark Word复制到锁记录,Displaced Mark Word
- CAS,将线程栈帧中锁记录地址CAS到对象头
当竞争激烈程度达到某种水平,对象头锁的状态变成重量级锁。在轻量级锁中频繁的cas操作会消耗很多cpu,当升级为重量级锁后只需要让没有获得锁的线程挂起然后重新竞争。
名单按照字母顺序排序。
- v1.0 2019/01/05