hashCode()方法中对象的内部地址

时间:2016-02-03 10:49:07

标签: garbage-collection hashcode

根据Object.hashCode()的JavaDoc,此方法返回将其转换为整数值的对象的内部地址。

但垃圾收集器可以将对象从一个内存段移动到另一个内存段,从而更改内部地址。例如,对象可以从Young Generation移动到Old Generation

例如,请参阅java.exe的以下命令行键:

  

-XX:+ UseSerialGC

     

-XX:+ UseParallelGC

     

-XX:+ UseParallelOldGC

     

-XX:+ UseConcMarkSweepGC

他们确定垃圾收集的不同算法。

这是否意味着在这种情况下Object.hashCode()将返回不同的值?

或者它总会返回对应于对象初始地址的值?

1 个答案:

答案 0 :(得分:0)

直接从javadoc

  

hashCode的一般合约是:

     

•每当在同一个对象上多次调用它时   执行Java应用程序时,hashCode方法必须始终如一   返回相同的整数,前提是equals中没有使用的信息   对象的比较被修改。不需要保留该整数   从一个应用程序的执行到另一个执行的一致性   相同的申请。