Jak JVM zapewnia, że ​​System.identityHashCode () nigdy się nie zmieni?

Zazwyczaj domyślna implementacjaObject.hashCode() jest pewną funkcją przydzielonego adresu obiektu w pamięci (choć nie jest to wymagane przezJLS). Biorąc pod uwagę, że maszyna wirtualna omija obiekty w pamięci, dlaczego wartość zwrócona przezSystem.identityHashCode() nigdy się nie zmienia podczas życia obiektu?

Jeśli jest to obliczenie „jednorazowe” (obiekthashCode jest obliczany raz i ukryty w nagłówku obiektu lub czymś innym), oznacza to, że dwa obiekty mogą mieć to samoidentityHashCode (jeśli przypadkiem zostaną przydzielone po raz pierwszy pod tym samym adresem w pamięci)?

questionAnswers(5)

yourAnswerToTheQuestion