Java虚拟机之锁优化

高效并发是从JDK1.5到JDK1.6的一个重要改进,HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning),锁消除(Lock Elimination),锁粗化(Lock Coarsening),轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等,这些技术都是为了在线程之间更高地共享数据,以及解决竞争问题,从而提高程序的执行效率。

Java虚拟机之锁优化 Java虚拟机之锁优化

Java虚拟机之锁优化 

锁消除

锁消除是指虚拟机即时编译器在运行时,对一些代码上要求同步,但是检测到不可能存在共享数据竞争的锁进行消除。锁消判定依据主要 来源于逃逸分析的数据支持,如果判定在一段代码中,堆上的所有数据都不会逃逸出去从而被其他线程访问到,那就可以把它们当作栈上数据对待,认为它们是线程私有的,同步加锁自然就无须进行。

Java虚拟机之锁优化

 Java虚拟机之锁优化

 Java虚拟机之锁优化

Java虚拟机之锁优化 Java虚拟机之锁优化

 

锁粗化

Java虚拟机之锁优化 

 

轻量级锁

Java虚拟机之锁优化

 Java虚拟机之锁优化

Java虚拟机之锁优化 

Java虚拟机之锁优化 

Java虚拟机之锁优化 

Java虚拟机之锁优化 

偏向锁

Java虚拟机之锁优化 

Java虚拟机之锁优化 

Java虚拟机之锁优化 

Java虚拟机之锁优化 Java虚拟机之锁优化