本文目录#

偏向锁的演进#

偏向锁自 JDK 6 引入,旨在降低无竞争场景的同步开销。JDK 15 默认关闭偏向锁(JEP 374),JDK 18 起移除,使得调优策略发生变化。了解其演进可帮助我们在旧版本中合理配置,在新版本中关注替代机制。

旧版本调优#

  • 启动延迟:-XX:BiasedLockingStartupDelay=0
  • 禁用:-XX:-UseBiasedLocking
  • 统计:-XX:+PrintBiasedLockingStatistics
  • 手动撤销:-XX:BiasedLockingBulkRebiasThreshold 控制重偏向阈值。

JDK 15+ 关注点#

  • 偏向锁被禁用,轻量级锁成为默认路径;
  • 可通过 JFR 事件 JavaMonitorEnter 观察锁竞争;
  • 在极端低竞争场景评估自旋/锁消除收益。

自检清单#

  • 是否评估目标 JDK 对偏向锁的默认行为?
  • 是否在高竞争类上禁用偏向锁以减少批量撤销?
  • 是否使用 JFR/Async-profiler 分析锁竞争热点?

参考资料#


本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。