前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM 的Lock Record简介

JVM 的Lock Record简介

作者头像
JavaEdge
发布2021-02-22 14:24:11
6520
发布2021-02-22 14:24:11
举报
文章被收录于专栏:JavaEdge

锁记录被用于偏向锁优化和轻量级锁优化。

lock record的数据结构

The lock record holds the original value of the object’s mark word and also contains metadata necessary to identify which object is locked.

lock record的openjdk实现 在openjdk中通过两个类BasicObjectLock和BasicLock来实现,数据结构如下:

代码语言:javascript
复制
// A BasicObjectLock associates a specific Java object with a BasicLock.
// It is currently embedded in an interpreter frame.
class BasicObjectLock VALUE_OBJ_CLASS_SPEC {
 private:
  BasicLock _lock;                        // the lock, must be double word aligned
  oop       _obj;                         // object holds the lock;
};
class BasicLock VALUE_OBJ_CLASS_SPEC {
 private:
  volatile markOop _displaced_header;
};

什么时候被创建?在哪里创建?

lock record的创建时机

When an object is lightweight locked by a monitorenter bytecode, a lock record is either implicitly or explicitly allocated on the stack of the thread performing the lock acquisition operation. 当字节码解释器执行monitorenter字节码轻度锁住一个对象时,就会在获取锁的线程的栈上显式或者隐式分配一个lock record。

lock record的创建位置

Interpreted frames contain a region which holds the lock records for all monitors owned by the activation. During interpreted method execution this region grows or shrinks depending upon the number of locks held. lock record在线程的Interpretered Frame上(解释帧)分配

有什么作用?

持有displaced word和锁住对象的元数据; 解释器使用lock record来检测非法的锁状态; 隐式地充当锁重入机制的计数器;

参考

  • 《Eliminating Synchronization-Related Atomic Operations with Biased Locking and Bulk Rebiasing》
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lock record的数据结构
  • 什么时候被创建?在哪里创建?
  • 有什么作用?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档