我们最近才开始使用 Hibernate,并且仍在适应它的工作方式。
我们看到的一件事是,即使在所有会话关闭并且引用超出范围之后,hibernate 似乎仍然在其缓存中维护以前使用的数据库值。
我们的代码可以多次读取一组表。因为所有的内存都被非常少量地释放,所以后面的传递速度会慢得像爬行一样。
有没有办法强制 Hibernate 清除其缓存?
显式调用 System.gc() 没有帮助。 (是的,我知道这是一个建议)
附加信息:我们已明确禁用二级缓存。
您可以尝试调用Session.clear来强制清除一级缓存。请务必首先调用 Session.flush 将任何挂起的更改写入数据库。如果这“解决”了问题,那么我怀疑某些东西仍然持有对会话的引用,从而阻止缓存中的对象被垃圾收集。您可能需要获取程序的堆转储来追踪泄漏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)