.NET的实现有意未发布(当您尝试对其进行反编译时,您会发现它进行了非托管框架调用)。这样的唯一文档在这里,它仅声明“不能保证为每个对象产生不同的值”,并且“可以在框架版本之间进行更改”。对它的实际工作方式做任何假设可能都是不明智的。
Java的理解更充分(尽管可能在JVM之间可能有所不同),并且在以下问题中专门介绍了Java:[由于使用权空间的压缩,.hashpre()是否会返回不同的int?
Java实现的要点是,根据合同,对象的哈希码的值在第一次检索之前是不相关的。在那之后,它必须保持恒定。因此,在第一次调用对象的hashpre()方法之前,移动对象的GC无关紧要。之后,将使用缓存的值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)