2013-08-16 219 views
2

我厭倦了以下惱人的錯誤,我該如何解決它?如果我使用Tomcat而不是GlassFish,它會解決問題嗎?我在本地運行,如果我在服務器上運行相同的應用程序,它會是一樣的嗎?如何擺脫PermGen空間?

SEVERE: java.lang.OutOfMemoryError: PermGen space 

SEVERE: Exception in module org.glassfish.main.core.kernel [228] : 
java.lang.OutOfMemoryError: PermGen space 
SEVERE: Exception in module org.glassfish.main.core.kernel [228] : 
java.lang.RuntimeException: java.lang.OutOfMemoryError: PermGen space 
SEVERE: Exception in thread "RMI RenewClean-[10.0.0.12:8686]" 
+0

我們需要更多的細節,特別是JVM參數。 – hexafraction

+0

我是Glassfish的新手,我可以在哪裏找到這些論點? –

+1

如果您在不重新啓動服務器的情況下重新部署應用程序,則此錯誤將在某個時刻發生,因爲容器會維護應用程序的舊副本。這是一個已知的問題:http://wiki.apache.org/tomcat/OutOfMemory – Badaro

回答

2

任何時候需要重新啓動服務器,以清理其記憶,因爲我有Tomcat的一個類似的問題。

更改內存大小隻是延遲問題,但不會阻止它。

此外,需要使用IDE的插件(如Profiler)爲netbeans或其他可用軟件查找應用程序的內存泄漏。

此外,正如Shaunak所說,您可以更改/glassfish/domain/domain1/config/domain.xml文件中perm內存的大小。

4

您是否嘗試增加glassfish的內存?

1)/glassfish/domain/domain1/config

外表爲<jvm-options>-XX:MaxPermSize=

增加其價值轉到"domain.xml「EG-198m or 256m或甚至更多可以是1024m。然後

2)停止玻璃魚重新啓動它。

+0

不,但我需要找到問題,否則需要隨時更改此內存大小。 –

+0

那麼如果這個內存太低,不妨將它增加1024m。你可能沒有任何問題,但它仍然會執行像編譯,部署等常規操作的內存。增加內存,然後我可以監視Glassfish,看看它是否持續佔用內存。不要忘了Java有一個非常高效的垃圾回收器:) – Shaunak

+0

@Juned指出的錯誤值得一看,一旦你增加了內存,並且它仍然用完。 – Shaunak

1

如果您在嘗試首次部署應用程序時遇到此錯誤,請通過domain.xm增加permgen空間l配置可能會有幫助。

但是要小心,您可能會碰到玻璃魚缺陷,導致在迭代部署中出現permgen錯誤。您正在重新部署應用程序

https://java.net/jira/browse/GLASSFISH-587

+0

使用該應用程序幾次後,當我嘗試重新運行它時,它會遇到此錯誤 –

+0

@TimNorman您可能需要升級到包含此修補程序的版本,或者如您所述在您的問題中提及,然後移動到tomcat。 –