2016-11-30 103 views
1

我的應用程序出現問題。當我嘗試打開一個頁面時,應用程序會提示java.lang.OutOfMemoryError: Java heap space的錯誤。Eclipse內存分析器:java.lang.OutOfMemoryError:Java堆空間

我們使用Struts2作爲框架,Tomcat 6作爲服務器,Openejb作爲數據庫連接。

我試圖找到爲什麼它會使用Eclipse擴展內存分析器出現內存不足,但我不得不說它不容易理解。

這裏是內存分析器的報告:

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

我真的不知道什麼提這個錯誤,但有沒有可能數據庫連接沒有關閉,那麼包含此連接的映射對JVM就變得很重要了。

我通過給JVM提供更多內存空間來解決問題,但我不確定這是解決此問題的好方法。

任何人都可以幫助我嗎?

感謝

+0

經常看到事情變化更容易。考慮將visualvm附加到tomcat實例,以查看應用程序在做實際工作時會發生什麼。 –

+0

這個主題可能是有用的:http://stackoverflow.com/questions/29590527/how-to-analyze-mat-with-eclipse – Berger

回答

0

根據你的快照,你的問題來自於它根據的javadoc領域WebappClassLoaderresourceEntries

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

換句話說,它是將存儲所有緩存通過Web應用程序的ClassLoader加載的所有資源文件和類的元信息,以避免在每次調用時掃描整個類路徑,因爲它可能非常慢,特別是當您有很多jar文件時。

據我所知,從the source code可以看出,對於我來說,除了像你已經做的那樣增加堆大小之外,你無能爲力。

+0

因此,我的問題沒有解決方案?我無法阻止JVM堆內存。這只是因爲我試圖加載到允許的內存數據。 –

相關問題