java会的。hashcode()返回一个不同的int,因为占用空间很小?
如果我在某个对象上调用Object.hashcode()
方法,它将返回该对象的内部地址(默认实现)。这个地址是逻辑地址还是物理地址
在垃圾收集中,由于内存压缩,对象在内存中发生移动。如果我在GC之前和之后调用hashcode,它会返回相同的hashcode(它返回)吗?如果是,为什么(因为压缩地址可能会改变)
你可以在下面搜索框中键入要查询的问题!
如果我在某个对象上调用Object.hashcode()
方法,它将返回该对象的内部地址(默认实现)。这个地址是逻辑地址还是物理地址
在垃圾收集中,由于内存压缩,对象在内存中发生移动。如果我在GC之前和之后调用hashcode,它会返回相同的hashcode(它返回)吗?如果是,为什么(因为压缩地址可能会改变)
# 1 楼答案
在这个link中,它表示默认的哈希代码确实是对象的JVM地址,但如果它被移动,地址将保持一致。 我不知道这个源代码有多可靠,但我确信这个方法的实现者考虑到了这个场景(这不是罕见的或不常见的情况),并确保了这个方法的正确功能
# 2 楼答案
如果hashcode发生变化,对象将消失在它插入的哈希集中,Sun将收到大量投诉