Eclipse Memory Analyser : java.lang.OutOfMemoryError: Java heap space

Eclipse Memory Analyser : java.lang.OutOfMemoryError: Java heap space

我的应用程序有问题。当我尝试打开页面时,应用程序引发 java.lang.OutOfMemoryError: Java heap space.

错误

我们使用 Struts2 作为框架,Tomcat 6 作为服务器,Openejb 作为数据库连接。

我试图通过 Eclipse 扩展内存分析器找出内存不足的原因,但我不得不说这并不容易理解。

这是内存分析器的报告:

我不太确定是什么引发了这个错误,但有没有可能是数据库连接没有关闭,然后包含这个连接的映射对于 JVM 来说变得太大了。

我通过为 JVM 提供更多内存 space 来解决问题,但我不确定这是解决此问题的好方法。

谁能帮帮我?

谢谢

根据您的快照,您的问题来自字段 resourceEntries of the WebappClassLoader,根据 javadoc:

The cache of ResourceEntry for classes and resources we have loaded, keyed by resource name.

换句话说,它是一个缓存,将存储所有资源文件的所有元信息和 类 通过您的 Web 应用程序 ClassLoader 加载以避免扫描每次调用时的整个类路径,因为当您有很多 jar 文件时,它可能会非常慢。

据我所知 the source code,对我来说,除了像您已经做的那样增加堆大小之外,您无能为力。