Jpa Eclipse链接数据库字段和内存泄漏
DatabaseField类存在内存泄漏问题。它消耗越来越多的内存,并且在gc操作期间从不释放任何内存。每次我们启动压力测试时,它都会在两周后保留20mb内存,这会使我的服务器崩溃Jpa Eclipse链接数据库字段和内存泄漏,jpa,memory-leaks,eclipselink,Jpa,Memory Leaks,Eclipselink,DatabaseField类存在内存泄漏问题。它消耗越来越多的内存,并且在gc操作期间从不释放任何内存。每次我们启动压力测试时,它都会在两周后保留20mb内存,这会使我的服务器崩溃 这个类和垃圾收集器之间的交互是什么。你必须使用一个工具来分析它们,就像内存堆一样,或者,无论如何,这是很难解决的 这里有一个示例,告诉您如何使用VisualVM捕捉它 祝你好运!(您需要它;-)看起来您在EclipseLink邮件列表中发布了更多信息,但仍然不足以说明问题所在。许多工具能够追踪物体上的物体,因此它不能
这个类和垃圾收集器之间的交互是什么。你必须使用一个工具来分析它们,就像内存堆一样,或者,无论如何,这是很难解决的 这里有一个示例,告诉您如何使用VisualVM捕捉它
祝你好运!(您需要它;-)看起来您在EclipseLink邮件列表中发布了更多信息,但仍然不足以说明问题所在。许多工具能够追踪物体上的物体,因此它不能被GCd识别;如果您跟踪DatabaseField,我打赌您会在应用程序中发现导致泄漏的问题 根据我的经验,使用JPA时内存泄漏的最常见原因是从不同EntityManager读取的应用程序缓存实体。由于这些实体具有对读取它们的上下文的引用,因此它们会阻止EntityManager被GC'd,这也会阻止其内部对象和缓存被GC'd。解决方案是不缓存应用程序中的实体-它们已经缓存在JPA中,因此您复制了内存使用情况,而没有获得通过应用程序在应用程序缓存中更新所做更改的好处。只需存储实体的ID,并在需要时使用find调用检索它。如果必须使用缓存,则可以使用只读查询检索要缓存的实体,如下所述: