您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

java 2022/1/1 18:27:33 有506人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶