2011-05-01 42 views
3

我在GlassFish中面臨非常惱火的例外是異常GlassFish中

SEVERE: Exception in thread "RMI RenewClean-[192.168.1.2:8686]" 
SEVERE: PermGen space 
java.lang.OutOfMemoryError: PermGen space 

我的硬件資源研究高,當我打開任務管理器,並注意資源,它的面世, 此異常迫使我重新啓動我的電腦每隔10〜15分鐘:(我應該怎麼辦?

回答

3

您需要使用-XX:MaxPermSize=256m標誌,以增加PermGen空間量。 見this related SO question

爲了設置此GlassFish中,使用following steps

  • 連接到您的GlassFish服務器的管理界面(本地主機:4848)
  • 移動到應用服務器>JVM設置>JVM選項和檢查的內存分配給Glassfish的實例全球量(應該是這樣的-Xmx512m或以上),並添加一個JVM期權的價值:

-XX:MaxPermSize=256m

內存量取決於您需要的數量。如果它繼續崩潰,請增加它,但是閱讀PermGen文章可能有助於確定合適的數量。

+0

很多,但這個標誌在哪裏?我真的很困惑。我試圖在cmd中運行它時,我在bin文件夾中,但它不是一個成功的嘗試! – palAlaa 2011-05-01 18:59:41

+0

我不確定這是否是最新版本,但請查看此配置指南:http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html – amccormack 2011-05-01 19:11:58

+0

Glassfish 4更改了位: http://i.imgur.com/CN8BiWF。jpg – Nadav 2014-03-14 11:18:06

2

permgem空間是玻璃魚的最惱人的錯誤之一。

當您在服務器中使用大量部署或重新部署時,permgem空間是一個錯誤,因爲服務器會保留內存並永遠不會釋放它。我建議你用Apache JMeter監視服務器以查看內存的數量(如果它接近最大值,則在崩潰之前重新啓動它)。

要臨時修復它,您必須在服務器中包含一些變量,以提高glassfish管理員的記憶體消耗,例如amccormack。

我建議你使用

-XX:PermSize =512米

-XX:MaxPermSize參數=512米

-XX:+ CMSClassUnloadingEnabled

順便說一句,如果出現permgem空間錯誤,服務器將不會響應(即使對於asadmin stop-domain)。但是,如果您殺死運行glassfish的Java進程並調用asadmin start-domain,則可以輕鬆地重新啓動。我認爲它比重新啓動所有服務器更快。

+0

請注意,'CMSClassUnloadingEnabled'只能與'UseConcMarkSweepGC'一起使用。後者也意味着'UseParallelGC'不能使用。請參閱http://stackoverflow.com/a/3334954/157762。 – 2013-12-12 16:30:09