【问题标题】:Memory leak in Hibernate session?Hibernate会话中的内存泄漏?
【发布时间】:2013-08-17 16:46:02
【问题描述】:

我在 Hibernate 会话中遇到内存泄漏。

一个长时间运行的线程不断地加载和更新数据。虽然线程定期调用entityManager.clear(),但我同时观察到:

1.) Session-size 的增长(自应用开始以来的线性增长)

2.) 执行时间的增长(自应用程序开始以来呈指数增长)

似乎有帮助的唯一方法是close() entitymanager 并重新打开它。我在几个未连接的应用程序中看到了这种行为,一些使用 spring,一些没有,一些使用 jpa-frontend,一些使用本地 hibernate。

很奇怪:虽然我从来没有遇到过没有这个问题的休眠应用程序,但在互联网上搜索却是一片空白。我(以及其他数十名开发人员)做错了什么?

【问题讨论】:

  • 休眠会话不应运行 长时间 时间,它应该在镜头循环中关闭。
  • 休眠会话绑定到实体管理器,我找不到将不同的会话放入 em 的可能性。同时,实体管理器绑定到正在运行的线程(至少:Spring 是这样说的)。那么:使用休眠会禁止长时间运行的线程吗?
  • 怎么绑定的?你是从 Spring 获得的吗?
  • 是的,使用 SpringEntityManagerFactoryUtils(至少在其中一个应用程序中)

标签: java hibernate memory-leaks hibernate-entitymanager


【解决方案1】:

休眠中存在一个错误,该错误会阻止清除以干净地清除会话。 见:

它应该在 4.3 中修复。

我的解决方法是使用短期会话。

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多