JVM如何确保System.identityHashCode()永远不会改变?

9 浏览
0 Comments

JVM如何确保System.identityHashCode()永远不会改变?

通常情况下,Object.hashCode()的默认实现是根据对象在内存中的分配地址计算出来的某个值(尽管这在JLS中并没有规定)。鉴于虚拟机会在内存中移动对象,为什么在对象的生命周期中,System.identityHashCode()返回的值永远不会改变呢?

如果它是一个“一次性”计算(对象的hashCode只计算一次并存储在对象头中),那么这是否意味着两个对象可能具有相同的identityHashCode(如果它们恰好在内存中的相同地址上首次分配)?

0