Como a JVM garante que System.identityHashCode () nunca será alterado?
Normalmente, a implementação padrão deObject.hashCode()
é alguma função do endereço alocado do objeto na memória (embora isso não seja exigido peloJLS). Dado que a VM evita objetos na memória, por que o valor retornado porSystem.identityHashCode()
nunca muda durante a vida do objeto?
Se for um cálculo "one-shot" (o objetivo éhashCode
é calculado uma vez e armazenado no cabeçalho do objeto ou algo assim), então isso significa que é possível que dois objetos tenham o mesmoidentityHashCode
(se acontecer de eles serem primeiro alocados no mesmo endereço na memória)?