Synchronized与锁升级

一:java对象内存布局

对象在堆内存的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data) 和对齐填充

二:对象在堆内存中的存储布局

三:Sychronized的锁升级

Synchronized用的锁是存在Java对象头里的MarkWord中,锁升级功能主要依赖MarkWord中锁标志位和释放偏向锁标志位

偏向锁:MarkWord存储的是偏向的线程ID
轻量锁:MarkWord存储的是指向线程栈中Lock Record的指针
重量锁:MarkWord存储的是指向堆中的monitor对象(系统互斥量指针)
Synchronized与锁升级_第1张图片

你可能感兴趣的:(juc,java)