Java Hibernate 内存泄漏

标签 java apache-flex hibernate memory-leaks blazeds

我正在使用 BlazeDS 开发 Flex 应用程序,并且在 hibernate 中使用 java 从 MySQL 查询时遇到内存泄漏。谁能告诉我如何处理这个内存泄漏?看来每次查询调用 java.exe 都会占用更多内存。

谢谢

我的java示例

factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
EntityManager em = factory.createEntityManager();

Query find = em.createNamedQuery("Plan.findByStudentId");
find.setParameter("studentId", studentID);

List<Plan> c = find.getResultList();

return c;

最佳答案

我假设在将数据返回到 Flex 后,您的 EntityManager 保持打开状态,这意味着您的 MySQL 连接保持打开状态。这就是内存泄漏最有可能发生的地方。因此 - 关闭您的 EntityManager

在另一条评论中,您说您正在使用 GlassFish。这是一个全新的场景。你的类是 Servlet 吗? EJB? GlassFish 应该管理您的 EntityManager(如果类本身是托管的),因此您不必自己创建或关闭它。在这种情况下,请使用@PersistenceContext注释来注入(inject)EntityManager(而不是使用Persistence.create..)

但是无论如何设置,您都必须执行的操作是启动探查器并查看内存分配的位置。

关于Java Hibernate 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1938801/

相关文章:

java - 哪一种最高效-HQL

hibernate - 使用内部查询的HQL批量删除

java - 创建一个可以不断更新变量的java方法

apache-flex - 将 Markdown 转换为 HTML 的 ActionScript 库

java - 如何使用 JOptionPane 编写一个应该是 boolean 值但答案可以是整数的循环?

ios - Flash Builder 4.6 - 如何为移动和桌面发布设置项目?

actionscript-3 - 如何使用 ActionScript 和flex将变量值放入arraycollection中?

java - Hibernate 在 Oracle 中使用序列生成器和序列

java - 类型不匹配 : cannot convert from java. lang.String 到 String

java - NullPointerException:在数组和面板中添加 JButton