JVM 的Lock Record简介

简介: JVM 的Lock Record简介

Lock Record用于偏向锁优化和轻量级锁优化。

Lock Record的数据结构

lock record保存对象mark word的原始值,还包含识别哪个对象被锁的所必需的元数据。

在openjdk中通过两个类BasicObjectLock和BasicLock来实现

// A BasicObjectLock associates a specific Java object with a BasicLock.
// It is currently embedded in an interpreter frame.
class BasicObjectLock {
  friend class VMStructs;
 private:
  BasicLock _lock; // 锁, must be double word aligned
  oop       _obj; // 持有锁的对象
};
class BasicLock {
 private:
  volatile markOop _displaced_header;
};

lock record的创建时机

当字节码解释器执行monitorenter字节码轻量地锁住一个对象时,就会在获取锁的线程的栈上显式或隐式分配一个lock record。

lock record的创建位置

Interpreted frames contain a region which holds the lock records for all monitors owned by theactivation. 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》

https://wiki.openjdk.java.net/display/HotSpot/Synchronization


目录
相关文章
|
11月前
|
存储 Java
【JVM】jvm简介特点和jvm在整个计算机框架中的位置
【JVM】jvm简介特点和jvm在整个计算机框架中的位置
46 0
|
3月前
|
监控 算法 Java
JVM调优-简介(一)
JVM调优-简介(一)
27 0
|
3月前
|
存储 Java 编译器
【JavaEE初阶】 JVM 运行时数据区简介
【JavaEE初阶】 JVM 运行时数据区简介
|
3月前
|
Oracle Java 关系型数据库
【JavaEE初阶】 JVM简介
【JavaEE初阶】 JVM简介
|
4月前
|
算法 Java 调度
简介JVM
简介JVM
26 0
|
自然语言处理 Java 编译器
Java及JVM简介
Java及JVM简介
|
存储 监控 Java
Java JVM监控工具JConsole简介
Java JVM监控工具JConsole简介
201 0
|
存储 算法 Java
Java虚拟机-垃圾回收简介
Java虚拟机-垃圾回收简介
106 0
Java虚拟机-垃圾回收简介
|
存储 XML Java
JVM虚拟机-Class文件简介
JVM虚拟机-Class文件简介
129 0
JVM虚拟机-Class文件简介
|
开发框架 安全 Oracle
Java基础一(Java 简介+JDK JRE JVM +如何搭建Java开发环境/Java 开发环境配置+Java 源程序与编译型运行区别)
Java 简介+java特性+JDK JRE JVM +如何搭建Java开发环境/Java 开发环境配置+Java 源程序与编译型运行区别)
238 1
Java基础一(Java 简介+JDK JRE JVM +如何搭建Java开发环境/Java 开发环境配置+Java 源程序与编译型运行区别)