在学习Java的多线程与并发时,会涉及到锁的概念。在对java的锁机制进行了解之后,我们会发现,一个Java对象的锁状态是保存在其对象头中的。
什么是对象头
对象头是一个对象用于保存对象自身状态的区域,他包括了标记字段(Mark Word)和类型指针(Class Pointer)两部分。如果是数组对象,除了标记字段,类型指针外,还有数组长度(Length)。
对象头布局
下面以64位Mark Word 为例:
- 锁标记位(lock):
01 : (无锁、偏向锁)
00 : (轻量级锁)
01 : (重量级锁)
11 : (GC标记) - 偏向锁标记 (biased-lock):
1: 对象启用偏向锁;0:对象未启用对象锁。
未完待续…