運行企業級應用程序的Tomcat。得到「Permgen內存不足」的消息。Permgen內存不足
我上運行此:
的Windows 2008 R2服務器, 的Java 1.6_43,0運行Tomcat作爲一項服務。
沒有多個部署。服務已啓動,App運行。最終我得到Permgen錯誤。
我可以通過增加perm尺寸來延遲錯誤,但是我想要真正解決這個問題。供應商不同意這個問題。我不知道這是否是內存泄漏,因爲供應商只是說「Jrockit運行良好」。 Ofc,如果是3mos之前的文檔,那將會很不錯。另外,有些帖子提示Jrockit只是擴展了permspace以適應,如果你有mem(不確定是否準確...),則可以達到4gb。
反正我看到在Java 1.5中的一些職位,可能的解決與選項 「-XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled」
然而,這些似乎都在Java 1.6的被棄用,現在唯一可用的GC是「-XX:+ UseG1GC」。
我能找到的最好的鏈接,在任何地方,就是: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#G1Options
有誰知道,如果新的G1垃圾收集器包括permspace?或者我在新的Java6 GC設置中遺漏了一個選項或2,這可能是我不理解的?
任何幫助表示讚賞!
您是否在不重新啓動tomcat的情況下多次進行部署?如果是這樣,我認爲這是由於Tomcat中的錯誤。 – kosa
@Nambari鏈接到這個bug? – hexafraction
@hexafraction:有很多關於這個bug的討論,這裏有一個例子:http://www.coderanch.com/t/590332/Tomcat/Java-lang-memory-exception-Pergem – kosa