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)?