https://blog.csdn.net/weixin_43606226/article/details/123530728

其中Synchronized涉及到重量级的锁,重量级的锁就和Monitor有关。

前置知识,JAVA的对象头组成

JAVA对象头

在32位虚拟机中

一个JAVA对象的对象头组成如下所示:

普通对象(总共8个字节,Mark Word占4个字节,Klass Word 占4个字节,Klass Word就是对对象信息的描述):

|-----------------------------------------------------------|
|                    Object Header (64 bits)                |
|---------------------------------|-------------------------|
|             Mark Word (32 bits) | Klass Word (32 bits)    |
|---------------------------------|-------------------------|

数组对象(总共12个字节,Mark Word占4个字节,Klass Word 占4个字节,数组长度占4个字节):

|---------------------------------------------------------------------------------|
|                                  Object Header (96 bits)                        |
|--------------------------------|-----------------------|------------------------|
|       Mark Word(32bits)        | Klass Word(32bits)    | array length(32bits)   |
|--------------------------------|-----------------------|------------------------|

在64位虚拟机中

一个JAVA对象的对象头组成如下所示: