会话关闭后如何强制hibernate释放内存?

Stu*_*que 5 java hibernate

我们刚刚开始使用Hibernate,并且仍然习惯它的工作方式.

在我们看到的事情上,即使在所有会话都关闭且引用超出范围之后,hibernate仍然似乎在其缓存中维护以前使用的数据库值.

我们的代码可以在多个过程中从一组表中读取.因为所有内存都非常谨慎地释放,所以后来的传递速度变慢了.

有没有办法强制Hibernate清除它的缓存?

显式调用System.gc()没有帮助.(是的,我知道这是一个建议)

附加信息:我们已明确禁用二级缓存.

Rob*_*b H 10

您可以尝试调用Session.clear来强制清除第一级缓存.请务必先调用Session.flush将任何挂起的更改写入数据库.如果"修复"了问题,那么我怀疑某些东西仍然保持对会话的引用,防止缓存中的对象被垃圾收集.您可能需要获取程序的堆转储以跟踪泄漏.