我的应用程序有问题。当我尝试打开页面时,应用程序引发错误 java.lang.OutOfMemoryError: Java heap space
。
我们使用 Struts2 作为框架,Tomcat 6 作为服务器,Openejb 作为数据库连接。
我试图通过 Eclipse 扩展内存分析器找出内存不足的原因,但我不得不说这并不容易理解。
这是内存分析器的报告:
我不太确定是什么引发了这个错误,但有没有可能是数据库连接没有关闭,然后包含这个连接的映射对于 JVM 来说变得太大了。
我通过为 JVM 提供更多内存空间来解决问题,但我不确定这是解决此问题的好方法。
谁能帮帮我?
谢谢
最佳答案
根据您的快照,您的问题来自字段resourceEntries
的 WebappClassLoader
这是根据 javadoc:
The cache of
ResourceEntry
for classes and resources we have loaded, keyed by resource name.
换句话说,它是一个缓存,将存储通过您的 Web 应用程序的 ClassLoader
加载的所有资源文件和类的所有元信息,以避免扫描整个类路径在每次调用时,因为当您有很多 jar 文件时,它可能会非常慢,尤其是。
据我所知the source code ,对我来说,除了像您已经做的那样增加堆大小之外,您无能为力。
关于java - Eclipse 内存分析器 : java. lang.OutOfMemoryError: Java 堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40886028/