Soweit ich weiß, ein Hash-Code des Objekts normalerweise im Header-Wort des Objekts gespeichert wird, die zum Beispiel das folgende Layout in HotSpot haben:Wo wird der Hash-Code des Objekts gespeichert, wenn in HotSpot JVM das Bias-Locking aktiviert ist?
| hash code | age | 0 | 01 |
Nach dem HotSpotInternals - Synchronization mit voreingenommen Sperren aktiviert das Header-Wort Layout sieht in der folgenden Art und Weise:
| 0 |epoch| age | 0 | 01 |
Wo kommt der Hash-Code wird dann, wenn tatsächlich gespeichert benötigt, wenn voreingenommen Verriegelung aktiviert ist?
Dies scheint der Fall zumindest in OpenJDK auf den Quellcode der Suche zu sein: http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/87ee5ee27509/src/share/vm/runtime /synchronizer.cpp#l601 –