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
    期待成为寂寞高手的武林老白
  • 相关阅读:
    ubuntu-18.04自动配置脚本
    Nodejs on windows 10
    终端接收FFMEPG推送的流出现音频卡顿问题
    FFMPEG 4.0 版本 支持PSI设置
    FFMPEG 支持https协议
    FFmpeg修改AC3编码的描述子
    FFMPEG 设置socket缓冲区
    将 h264 格式转换为YUV数据
    将 YUV 数据 编码为 h.264 格式
    将 PCM 数据编码为AAC格式
  • 原文地址:https://www.cnblogs.com/aquariusm/p/6110771.html
Copyright © 2011-2022 走看看