最早知道同一个对象在不同的jvm(即使是同一个版本的jdk)有可能是不一样的,导致ibatis不支持分布式缓存,因为ibatis的缓存的key是根据hashcode实现的。
https://issues.apache.org/jira/browse/IBATIS-555
那么hashcode是怎么实现的呢?为什么在不同的jvm(java 进程)不一样呢?
看看JAVA Object hashcode的源码,,,,
发现是一个本地方法
注解:
This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.
翻译过来大概是:hashcode的值是对象在内存的地址算出来的,,,,不同的程序运行同一个对象,因为内存地址不一样,生成的hashcode当然不一样。