zoukankan      html  css  js  c++  java
  • HotSpotOverview.pdf

    从oracle官网下载的这个HotSpot虚拟机的概况文档,现在翻一下锁的部分;

    Java 锁

    *每一个java对象都是一个潜在的monitor(监视器)

         >synchronized 关键字

    *所有现代JVM虚拟机都包含light-weight锁

      >避免关联一个系统互斥信号量或者每个对象的条件变量(heavy-weight lock)

      >当没有竞争时,使用原子变量进入或者退出monitor

      >当有竞争时,退回到heavy-weight的OS锁

    *高效,因为大多数锁都是没有竞争的

    Light-weight Locking (轻-重锁)

    *每一个对象的第一个字节是 mark word
    *用来做同步和GC
      >同样的如果之前计算过,就缓存hashcode
    *markWord的低位2个字节用来存储同步状态
      >01 => unlocked
      >00 => light-weight locked
      >10 => heavy-weight locked
      >11 => marked for GC
     
    Light-weight Locking (轻-重锁)
    *当对象被锁定时,mark word 被拷贝到线程栈的建造中的lock record 
      >又叫做,移位mark
    *使用原子操作CAS引导尝试使mark word 指向lock record
    *如果CAS成功,线程获得锁
    *如果CAS失败,竞争:锁膨胀(制造heavy-weight 重锁)
     
     
     
     
     
    参考文章:
    http://www.cnblogs.com/redcreen/archive/2011/03/29/1998800.html
    http://blog.csdn.net/xiaomin1991222/article/details/50981423
    期待成为寂寞高手的武林老白
  • 相关阅读:
    全文检索引擎 sphinxcoreseek中文索引
    html 截图粘粘图片JS
    php 无限参数方法
    LINUX SSH 建立密钥对
    PHP递归无限分类,数组和直接输出。
    带cookie请求数据
    JS 红包随机
    《大话数据结构》 第四章 栈与队列
    《大话数据结构》第二章 算法
    《大话设计模式》 第二章 策略模式
  • 原文地址:https://www.cnblogs.com/aquariusm/p/6110771.html
Copyright © 2011-2022 走看看