锁升级过程中,hashCode存哪里去了?

锁升级过程中,hashCode存哪里去了?

那么转为重量级锁后,hash值存到哪里去了呢?

这里引用R大的回答

这是一个针对HotSpot VM的锁实现的问题。
简单答案是:

当一个对象已经计算过identity hash code,它就无法进入偏向锁状态;
当一个对象当前正处于偏向锁状态,并且需要计算其identity hash code的话,则它的偏向锁会被撤销,并且锁会膨胀为重量锁;
重量锁的实现中,ObjectMonitor类里有字段可以记录非加锁状态下的mark word,其中可以存储identity hash code的值。或者简单说就是重量锁可以存下identity hash code。
请一定要注意,这里讨论的hash code都只针对identity hash code。用户自定义的hashCode()方法所返回的值跟这里讨论的不是一回事。
Identity hash code是未被覆写的 java.lang.Object.hashCode() 或者 java.lang.System.identityHashCode(Object) 所返回的值。

作者:RednaxelaFX
链接:https://www.zhihu.com/question/52116998/answer/133400077
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
————————————————
版权声明:本文为CSDN博主「yjx_python」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yjx_python/article/details/120115252

posted @ 2022-03-16 15:56  塔扣  阅读(331)  评论(0)    收藏  举报