返回顶部
首页 > 资讯 > 精选 >浅谈Java虚拟机对内部锁的四种优化方式
  • 620
分享到

浅谈Java虚拟机对内部锁的四种优化方式

java虚拟机优化 2023-05-31 01:05:12 620人浏览 独家记忆
摘要

自Java 6/Java 7开始,Java虚拟机对内部锁的实现进行了一些优化。这些优化主要包括锁消除(Lock Elision)、锁粗化(Lock Coarsening)、偏向锁(Biased Locking)以及适应性锁(Adaptive

自Java 6/Java 7开始,Java虚拟机对内部的实现进行了一些优化。这些优化主要包括锁消除(Lock Elision)、锁粗化(Lock Coarsening)、偏向锁(Biased Locking)以及适应性锁(Adaptive Locking)。这些优化仅在Java虚拟机server模式下起作用(即运行Java程序时我们可能需要在命令行中指定Java虚拟机参数“-server”以开启这些优化)。

1 锁消除

锁消除(Lock Elision)是JIT编译器对内部锁的具体实现所做的一种优化。

浅谈Java虚拟机对内部锁的四种优化方式 

锁消除(Lock Elision)示意图

在动态编译同步块的时候,JIT编译器可以借助一种被称为逃逸分析(Escape Analysis)的技术来判断同步块所使用的锁对象是否只能够被一个线程访问而没有被发布到其他线程。如果同步块所使用的锁对象通过这种分析被证实只能够被一个线程访问,那么JIT编译器在编译这个同步块的时候并不生成synchronized所表示的锁的申请与释放对应的机器码,而仅生成原临界区代码对应的机器码,这就造成了被动态编译的字节码就像是不包含monitorenter(申请锁)和monitorexit(释放锁)这两个字节码指令一样,即消除了锁的使用。这种编译器优化就被称为锁消除(Lock Elision),它使得特定情况下我们可以完全消除锁的开销。

Java标准库中的有些类(比如StringBuffer)虽然是线程安全的,但是在实际使用中我们往往不在多个线程间共享这些类的实例。而这些类在实现线程安全的时候往往借助于内部锁。因此,这些类是锁消除优化的常见目标。

清单12-1  可进行锁消除优化的示例代码

public class LockElisionExample { public static String toJSON(ProductInfo productInfo) {  StringBuffer sbf = new StringBuffer();  sbf.append("{\"productID\":\"").append(productInfo.productID);  sbf.append("\",\"cateGoryID\":\"").append(productInfo.categoryID);  sbf.append("\",\"rank\":").append(productInfo.rank);  sbf.append(",\"inventory\":").append(productInfo.inventory);  sbf.append('}');  return sbf.toString(); }}

--结束END--

本文标题: 浅谈Java虚拟机对内部锁的四种优化方式

本文链接: https://lsjlt.com/news/222592.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈Java虚拟机对内部锁的四种优化方式
    自Java 6/Java 7开始,Java虚拟机对内部锁的实现进行了一些优化。这些优化主要包括锁消除(Lock Elision)、锁粗化(Lock Coarsening)、偏向锁(Biased Locking)以及适应性锁(Adaptive...
    99+
    2023-05-31
    java 虚拟机 优化
  • Java虚拟机内存优化的方法
    这篇文章主要介绍“Java虚拟机内存优化的方法”,在日常操作中,相信很多人在Java虚拟机内存优化的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java虚拟机内存优化的方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作