synchronized原理

来源:9-2 synchronized底层实现原理

可乐少女

2021-06-09

老师好,有几个小问题想要请教一下:
1、类似ObjectMonitor和ObjectWait对象也是在堆中创建的吗?不管是hotspot源码中创建的对象还是我们自己创建的对象都是在堆中创建的吗?
2、只有使用重量级锁的时候才生成ObjectMonitor吗?如果对象创建的时候隐式创建ObjectMonitor,那万一没有使用锁,ObjectMonitor会不会占用内存啊?
3、原文中说的是obj区域,为什么不是线程获取到对象的Monitor后进入owner区啊?

写回答

1回答

翔仔

2021-06-11

同学好,1.对象都是在堆中的。堆主要用来存放对象的,栈主要是用来执行程序的
2.ObjectMonitor涉及到synchronized升级到重量级锁的过程。synchronized关键字的执行过程还涉及到锁机制的升级过程,升级顺序为 自旋锁、偏向锁、轻量级锁、重量级锁;只有才升级为重量级锁的时候才会启动monitor机制,并且创建对象
3.同学能详细描述下问题不,看得不是很懂。

0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8453 学习 · 1872 问题

查看课程