目录
1.6版本以后引入锁升级,逐步调整锁的级别减少系统资源消耗,四个过程
1.5版本之前锁的状态
-
只有无锁和重锁
-
加锁需要在用户态和内核态之间切换,性能低下
1.6版本以后引入锁升级,逐步调整锁的级别减少系统资源消耗,四个过程
JVM如何判断对象当前是什么锁?
通过对象头的标志为,也就是对象的前8个字节,64位中的后三位
锁升级的过程(看图)
总结:先自旋,自旋失败后加重锁
偏向的几乎和无锁效率差不多,自旋不阻塞,谁抢到谁进去不用唤起和等待消耗就比重锁小,锁升级可以在JVM进行调整,确认环境一定是高并发那就把偏向锁和轻锁关掉。