Eclipse Memory Analyzer:java.lang.OutOfMemoryError:Java堆空间

时间:2016-11-30 10:32:03

标签: java tomcat out-of-memory heap-dump openejb

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

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

我试图通过Eclipse扩展内存分析器找到它为什么内存不足但我不得不说它不容易理解。

以下是Memory Analyzer的报告:

Top consumers Description Shortest Paths to the accumulation point Accumulated Objects in dominator tree

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

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

任何人都可以帮助我吗?

由于

1 个答案:

答案 0 :(得分:0)

根据您的快照,您的问题来自resourceEntries的字段WebappClassLoader,该字段符合javadoc:

  

我们加载的类和资源的ResourceEntry缓存,   由资源名称键入。

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

据我所知the source code,对我来说,除了增加你的堆大小之外你没办法解决它。