美文网首页
深入JVM内核原理-4.JVM锁

深入JVM内核原理-4.JVM锁

作者: 笨鸡 | 来源:发表于2019-07-24 00:33 被阅读0次

1.JVM锁概要

JVM锁概要.png

2.线程安全

JVM线程安全1.png
JVM线程安全2.png

3.对象头Mark

  • Mark Word,对象头的标记,32位
  • 描述对象的hash、锁信息,垃圾回收标记,年龄
    • 指向锁记录的指针
    • 指向monitor的指针
    • GC标记
    • 偏向锁线程ID

4.偏向锁

  • 大部分情况是没有竞争的,所以可以通过偏向来提高性能
  • 所谓的偏向,就是偏心,即锁会偏向于当前已经占有锁的线程
  • 将对象头Mark的标记设置为偏向,并将线程ID写入对象头Mark
  • 只要没有竞争,获得偏向锁的线程,在将来进入同步块,不需要做同步
  • 当其他线程请求相同的锁时,偏向模式结束
  • -XX:+UseBiasedLocking
    • 默认启用
  • 在竞争激烈的场合,偏向锁会增加系统负担
偏向锁.png

5.轻量级锁

轻量级锁1.png
轻量级锁2.png
轻量级锁3.png

6.自旋锁

自旋锁.png

7.偏向锁、轻量级锁、自旋锁总结

  • 不是Java语言层面的锁优化方法
  • 内置于JVM中的获取锁的优化方法和获取锁的步骤
    • 偏向锁可用会先尝试偏向锁
    • 轻量级锁可用会先尝试轻量级锁
    • 以上都失败,尝试自旋锁
    • 再失败,尝试普通锁,使用OS互斥量在操作系统层挂起

8.减少锁持有时间

减少锁持有时间.png

9.减小锁粒度

减少锁粒度1.png
减小锁粒度2.png

10.锁分离

锁分离1.png
锁分离2.png

11.锁粗化

锁粗化1.png
锁粗化2.png
锁粗化3.png

12.锁消除

锁消除1.png
锁消除2.png

13.无锁

无锁1.png
无锁2.png

相关文章

网友评论

      本文标题:深入JVM内核原理-4.JVM锁

      本文链接:https://www.haomeiwen.com/subject/qntzlctx.html