1. 程式人生 > 其它 >鎖升級過程中,hashCode存哪裡去了?

鎖升級過程中,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