博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HotSpotOverview.pdf
阅读量:6844 次
发布时间:2019-06-26

本文共 817 字,大约阅读时间需要 2 分钟。

从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

转载于:https://www.cnblogs.com/aquariusm/p/6110771.html

你可能感兴趣的文章
leetcode - Jump Game II
查看>>
Swift - 移除页面视图上的所有元素
查看>>
Swift - 使用Media Player播放本地视频,在线视频
查看>>
GIT 单个文件还原到历史版本号
查看>>
微信公众号开发系列-开发环境要求和准备工作
查看>>
Aizu 2305 Beautiful Currency DP
查看>>
【机器学习系列】机器学习界大牛林达华推荐的书籍
查看>>
【Win10 应用开发】使用“实时可视化树”工具查看应用界面元素
查看>>
ssiOS应用架构谈 本地持久化方案及动态部署
查看>>
Linux后台执行脚本文件,nohup
查看>>
sql和access中截取字符串的区别
查看>>
11G新特性 -- flashback data archive(2)
查看>>
深入分析MFC文档视图结构(项目实践)
查看>>
WPF笔记(1.9 样式和控件模板)——Hello,WPF!
查看>>
hpu第五届acm比赛
查看>>
IOS学习之蓝牙4.0
查看>>
[stm32] 一个简单的stm32vet6驱动2.4寸240X320的8位并口tft屏DEMO
查看>>
冰河远程控制软件使用
查看>>
hdu 5583 Kingdom of Black and White(模拟,技巧)
查看>>
线段树模板
查看>>