导语
上篇分享中提到了对象头Mark Word 的基本概念之后,接下来就可以深入到虚拟机内部了。在多线程程序中,线程之间的竞争是不可避免的,并且这是一种多线程程序的常态。那么如何高效的处理多线程的竞争,是JVM的一项关键优化点,如果将所有的线程处理都交给操作系统,那么整体的处理效率比较低。所以,JVM在进入操作系统处理之前,首先就需要做好前期的准备工作,这样尽可能的避免真实场景的竞争发生。下面就来看看JVM对于锁的优化等问题。
锁机制在JVM中的实现和优化
偏向锁
偏向锁是JDK1.6 中提出的一种锁的优化方式。核心思想是,如果程序没有竞争,则取消之前已经取得锁的线程同步操作。也就是说,某个锁被线程获取之后,就会进入偏向模式,当线程再次请求这个锁的时候,不需要在进行相关的同步操作,从而节省了操作的时间,如果在此期间有其他的线程进行锁请求,则退出偏向模式。在JVM中使用-XX:+UseBiasedLocking 可以设置启用偏向锁。
-XX: