Java中如何具体实现锁的升级过程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1224个文字,预计阅读时间需要5分钟。
Java对象在内存中的布局可以分为三块区域:对象头、实例数据和填充。
对象头分为两部分:Mark Word(32位虚拟机)和指针(64位虚拟机)。
Mark Word用于存储对象的运行时数据,如哈希码、锁状态、分代年龄等。
对象内存布局
Java对象在内存中存储的布局可以分为3块区域: 对象头、实例数据、对齐填充。
对象头,分为两个部分,第一个部分存储对象自身的运行时数据,又称为Mark Word,32位虚拟机占32bit,64位虚拟机占64bit。如图所示,不同锁状态下,Mark Word的结构,理解下面要介绍的各种锁,和锁升级过程,都需要先充分了解Mark Word的结构。
第二部分是类型指针,指向类元数据指针,虚拟机通过此指针,确定该对象属于那个类的实例。
轻量级锁
轻量级锁是相对于重量级锁(Synchrnoized)而言的,本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。
本文共计1224个文字,预计阅读时间需要5分钟。
Java对象在内存中的布局可以分为三块区域:对象头、实例数据和填充。
对象头分为两部分:Mark Word(32位虚拟机)和指针(64位虚拟机)。
Mark Word用于存储对象的运行时数据,如哈希码、锁状态、分代年龄等。
对象内存布局
Java对象在内存中存储的布局可以分为3块区域: 对象头、实例数据、对齐填充。
对象头,分为两个部分,第一个部分存储对象自身的运行时数据,又称为Mark Word,32位虚拟机占32bit,64位虚拟机占64bit。如图所示,不同锁状态下,Mark Word的结构,理解下面要介绍的各种锁,和锁升级过程,都需要先充分了解Mark Word的结构。
第二部分是类型指针,指向类元数据指针,虚拟机通过此指针,确定该对象属于那个类的实例。
轻量级锁
轻量级锁是相对于重量级锁(Synchrnoized)而言的,本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。

