最近一个项目做压力测试的时候发现内存不断攀升,从jconsole观察感觉内存有泄漏问题。
安装jprofiler,跟踪内存对象的变化,发现 oscache中不断添加对象,估计和hiberante和oscache有关系,debug到代码内部,代码使用到了hibernate的复合主键,复合主键实现类没有覆盖掉toString方法,而hibernate的cache用到了这个方法,导致cache无法命中,同一个对象不断存到cache中。覆盖掉toString方法后,问题解决
安装jprofiler,跟踪内存对象的变化,发现 oscache中不断添加对象,估计和hiberante和oscache有关系,debug到代码内部,代码使用到了hibernate的复合主键,复合主键实现类没有覆盖掉toString方法,而hibernate的cache用到了这个方法,导致cache无法命中,同一个对象不断存到cache中。覆盖掉toString方法后,问题解决
解决Hibernate缓存泄漏
本文介绍了一个关于Hibernate复合主键导致缓存泄漏的问题及其解决方案。通过覆盖toString方法解决了因缓存无法命中造成的内存泄漏。
1334

被折叠的 条评论
为什么被折叠?



