您的位置 首页 java

知识整理——Java 锁基础

对象头信息

Java的实例对象、数组对象在内存中的组成包括三部分:对象头Hearder、实例数据、内存填充。

对象头信息主要包括两部分:标记位(MarkWord)和对象指针(Class Pointer),其中标记位占8个字节,对象指针占4个字节。

此外,对于数组对象而言,额外有4个字节代表数组长度。

Java的对象头在对象不同情况下会有不同的表现形式,主要有三种状态: 无锁状态、有锁状态、GC标记状态 。其中锁状态又分为 偏向锁、轻量级锁、重量级锁 三类。

知识整理——Java 锁基础

知识整理——Java 锁基础

标记位和锁

知识整理——Java 锁基础

重量级锁

synchronized 底层有一个monitor监视器,会监控持有锁的对象,加锁解锁都由JVM控制

经过javac编译后,会在同步块的前后分别形成MonitorEnter和MonitorExit这两个字节码指令,都需要一个refrence类型的参数来指明要锁定和解锁的对象。

知识整理——Java 锁基础

针对重量级锁做了哪些优化?

知识整理——Java 锁基础

锁膨胀

文章来源:智云一二三科技

文章标题:知识整理——Java 锁基础

文章地址:https://www.zhihuclub.com/186687.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图