2012-01-12 27 views
0

我注意到在大型應用程序中發生了這種情況,前端服務器吞吐PermGen的速度相當快,最糟糕的部分是每次請求都不斷增加,有時候它會繼續增加,即使我們沒有完全可以嚮應用服務器發出任何請求。我面對這與tomcat 6.0.33,tomcat6.0.29都。Struts2 PermGen內存不足錯誤

要隔離這個問題,我拿起struts空白,讓我沮喪的是它顯示了同樣的趨勢。這是正常的嗎? 我試着用maven(mvn archetype:generate)檢查出幾個版本的struts2,比如2.2.1,2.2.1.1,2.2.3.1,並且在jetty中運行它們之後,我注意到PermGen空間在每個請求中都被填充了2-3KB。我正在測試struts blank和jetty-6.1.21。

由於PermGen作爲請求數量的函數而增加,我懷疑有多少值得去使用它的產品?

+0

1.在網絡應用程序中多次調用這會導致PermGen空間上升嗎? 'inst = Class.forName(「com.xxx.yyy.MyClass」)。newInstance(); ... inst = null;'2.這個類是否被卸載並在稍後收集垃圾? – 2012-01-13 07:35:19

+0

沒有任何關於你的分析器細節的細節,它真的很難爲任何人說什麼。 – 2012-01-16 05:00:18

+0

@Umesh我想知道的是,是否存在與struts-2相關的任何已知問題。而且,如果你可以回答,如果上述senario inst = Class.forName(「com.xxx.yyy.MyClass」)。newInstance(); ... inst = null;可能會導致PermGen空間內存泄漏。關於性能問題的 – 2012-01-19 04:58:21

回答

4

唯一可以肯定的方法是附加一個分析器並查看哪些類佔用了最多的內存,並嘗試查找內存泄漏。您可以將jvm配置爲在崩潰時轉儲堆,並將生成的文件加載到分析器中,以查看堆崩潰時的狀態。

Struts用於許多生產Web應用程序。我認爲這很可能是您的應用程序出現問題。