gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:51:45 25 4
gpt4 key购买 nike

Object.hashCode() 的默认实现通常是对象在内存中的分配地址的一些函数(尽管这不是由 JLS)。鉴于 VM 在内存中分流对象,为什么 System.identityHashCode() 返回的值在对象的生命周期内永远不会改变?

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

最佳答案

现代 JVM 将值保存在对象 header 中。我相信该值通常仅在首次使用时计算,以便将对象分配所花费的时间保持在最低限度(有时低至十几个周期)。可以编译通用的 Sun JVM,使所有对象的标识哈希码始终为 1。

多个对象可以具有相同的身份哈希码。这就是哈希码的本质。

关于java - JVM 如何确保 System.identityHashCode() 永远不会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com