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.同学能详细描述下问题不,看得不是很懂。00
相似问题