我的申请有问题。当我尝试打开页面时,应用程序引发错误java.lang.OutOfMemoryError: Java heap space
。
我们使用Struts2作为框架,Tomcat 6作为服务器,使用Openejb作为数据库连接。
我试图通过Eclipse扩展内存分析器找到它为什么内存不足但我不得不说它不容易理解。
以下是Memory Analyzer的报告:
我不确定是什么引发了这个错误,但是数据库连接可能没有关闭,然后包含此连接的地图对JVM来说变得很大。
我通过为JVM提供更多内存空间来解决问题,但我不确定这是解决此问题的好方法。
任何人都可以帮助我吗?
由于
答案 0 :(得分:0)
根据您的快照,您的问题来自resourceEntries
的字段WebappClassLoader
,该字段符合javadoc:
我们加载的类和资源的
ResourceEntry
缓存, 由资源名称键入。
换句话说,它是一个缓存,它将存储通过Web应用程序的ClassLoader
加载的所有资源文件和类的所有元信息,以避免在每次调用时扫描整个类路径因为当你有很多jar文件时它可能非常慢。
据我所知the source code,对我来说,除了增加你的堆大小之外你没办法解决它。