如果Java的垃圾回收器移动对象,那么Object.hashCode和System.identityHashCode是什么?

如果Java的垃圾回收器移动对象,那么Object.hashCode和System.identityHashCode是什么?,第1张

如果Java的垃圾回收器移动对象,那么Object.hashCode和System.identityHashCode是什么?

.NET的实现有意未发布(当您尝试对其进行反编译时,您会发现它进行了非托管框架调用)。这样的唯一文档在这里,它仅声明“不能保证为每个对象产生不同的值”,并且“可以在框架版本之间进行更改”。对它的实际工作方式做任何假设可能都是不明智的。

Java的理解更充分(尽管可能在JVM之间可能有所不同),并且在以下问题中专门介绍了Java:[由于使用权空间的压缩,.hashpre()是否会返回不同的int?

Java实现的要点是,根据合同,对象的哈希码的值在第一次检索之前是不相关的。在那之后,它必须保持恒定。因此,在第一次调用对象的hashpre()方法之前,移动对象的GC无关紧要。之后,将使用缓存的值。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5562268.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存