当前位置: 首页 > article >正文

jvm学习笔记-轻量级锁内存模型

一,轻量级锁

  1. LockRecord的那个第一个成员变量是拷贝对应锁定了的java对象资源的MarkWord,
  2. Lock Record有一个Ptr指针刚开始指向自己,后面这个指针存储在锁定资源的java对象的markword中,后续可以通过java对象的MarkWord快速定位到LockRecord本身。
  3. 一个是记录Object对象的指针PtrObj,方便定位到锁定的java对象资源
  4. 还有一个是记录锁的重入次数cnt

步骤1:锁1次

我首先来介绍MarkWord(32bits)这个红色的图怎么理解?
首先这四行分别对应了“无锁”,“偏向锁”,“轻量级锁”,“重量级锁”,其实真正应用起来,只用到其中1行的数据,也就是说,我这个java对象,
无锁的时候,MarkWord里面内容就是“hashcode”,“age”,“biased_lock”,“state”,25 + 4 + 1 + 2 = 32bits
偏向锁的时候,MarkWord里面内容就是“Thread-ID”,“epoch”,“age”,“biased_lock”,“state” 23 + 2 + 4 + 1 + 2 = 32 bits
轻量级锁的时候,MarkWord里面内容就是“ptr_to_lock_record”,“state”,30 + 2 = 32bits
重量级锁的时候,MarkWord里面内容就是“ptr_to_heavyweight_monitor”,“state”,30 + 2 = 32bits
如果state = 11,那么就是标记为gc,即将垃圾回收了应该是.

在这里插入图片描述

步骤二:又锁了一次(锁重入)

CopyOfMarkWord = NULL,ObjPtr = this , cnt = cnt + 1
在这里插入图片描述

步骤三:

unlock一次锁
cnt = cnt - 1,然后根据栈里面锁的次序,后入先出,依次解锁,解锁的时候发现LockRecord里面的MarkWord为NULL,表示还可以解锁,不是最后一层锁。
后面再解锁

步骤四:

解锁到最后一层,(其实是发现了该LockRecord的MarkWord不为NULL,认为是最后一层锁),因为是最后一层,因此使用CAS把MarkWord拷贝回去object里面,再用CAS吧LockRecord指针拷贝回去原来LockRecord里面,然后ObjPtr置为NULL。

注意,中间的CAS修改如果失败,说明发生竞争,会膨胀为重量级锁!!
在这里插入图片描述

二,偏向锁

在这里插入图片描述

偏向锁主要是MarkWord里面存储获取锁的线程ID,修改biased_lock标志为1和最后两位为01
在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/383838.html

相关文章:

  • 双指针算法篇——一快一慢须臾之间解决问题的飘逸与灵动(3)
  • ChatGPT 新体验:AI 搜索功能与订阅支付指南
  • HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别
  • 【LeetCode】【算法】206. 反转链表
  • 基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
  • Maven 下载配置 详解 我的学习笔记
  • Vue2 与 Vue3 的区别
  • C++ -- 继承
  • day52 图论章节刷题Part04(110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长 )
  • promise的用法以及注意事项,看了这篇你就会了
  • 100种算法【Python版】第52篇——无损压缩之霍夫曼编码
  • 查看网路信息-ifconfig命令
  • Tomasulo算法介绍
  • 介绍一下memcpy(c基础)
  • 文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点?
  • 【Golang】区块链练习(一)
  • 2025天津市考8日报名,建议收藏好报名流程
  • 昆仑通态触摸屏学习路程
  • NFT Insider #154:The Sandbox Alpha 4 第四周开启,NBA Topshot NFT 销量激增至新高
  • WPF中的转换器
  • 机器学习—推理:做出预测(前向传播)
  • WPF+MVVM案例实战(二十二)- 制作一个侧边弹窗栏(CD类)
  • AWS S3在客户端应用不能使用aws-sdk场景下的文件上传与下载
  • 七.numpy模块
  • 2024-11-06 问AI: [AI面试题] 人工智能如何用于欺诈检测和网络安全?
  • Bert快速入门