- Object Header 由几部分组成,其中有一个叫 Mark Word 的重要部分,是实现偏向锁、轻量级锁、重量级锁的关键;
- Mark Word 在 32 位、64 位的不同 CPU 架构下、是否开启 Compressed OOP 的功能、不同状态的对象,有不同的数据结构;
- 对象处于普通状态时,Mark Word 主要保存 hashcode 和锁标识状态;
- 对象处于偏向锁状态时,Mark Word 主要保存 Biased Thread 指针和锁标志状态;
- 对象处于重量级锁状态时,MarkWord 主要保存 Lock Record 指针和锁标志状态;
- Java Object Header: https://gist.github.com/arturmkrtchyan/43d6135e8a15798cc46c
- jol-samples:
- thin lock: http://hg.openjdk.java.net/code-tools/jol/file/03064c057dc9/jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_12_ThinLocking.java
- biased lock: http://hg.openjdk.java.net/code-tools/jol/file/03064c057dc9/jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_13_BiasedLocking.java
- fat lock: http://hg.openjdk.java.net/corde-tools/jol/file/03064c057dc9/jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_14_FatLocking.java
Last active
May 14, 2022 17:45
-
-
Save fantasticmao/9d4a0909cbe83b9681ddf3c87af60854 to your computer and use it in GitHub Desktop.
synchronized 关键字优化:Biased Lock、Lightweight Lock、Heavyweight Lock
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment