2010-08-19 131 views
2

我正在NetBeans6.8中開發Web應用程序並使用Jboss服務器部署我的應用程序。我能夠正常運行該項目,但一段時間後,我得到TGIS錯誤如何避免java.lang.OutOfMemoryError:Netbeans中的PermGen空間

java.lang.OutOfMemoryError: PermGen space : 
之後,我不得不重新啓動我的JBoss服務器

。有些時候我需要重新啓動我的Netbeans IDE 任何一個可以告訴我這個錯誤的原因和如何避免這種

感謝 羅漢

回答

1

添加-XXMaxPermSize=256M到您的應用程序啓動命令

8

加此

-XX:+UseConcMarkSweepGC 
-XX:+CMSPermGenSweepingEnabled 
-XX:+CMSClassUnloadingEnabled 
-XX:MaxPermSize=128m 
+0

我在Netbeans中添加了這些選項:工具>服務器>部署,然後在「虛擬機選項」字段中的平臺選項卡。希望這可以工作......如果沒有,我會刪除這條評論。 – 2011-08-08 04:38:14

1

不時彈出您的服務器。你可能不喜歡這種熱部署能力的限制,但問題是,當你重新部署太多次時,最終你會再次觸及燙髮極限。

只是反彈服務器每第n次重新部署,其中n <#導致OOM錯誤。

+1

+1 - 現實叮咬 – 2010-08-19 13:28:36

2

向你的堆中添加更多的megs不會解決你的問題,你可以添加無窮大&仍然耗盡了粗糙的代碼。 不僅僅是JBoss的問題,我想你的代碼最有可能是內存泄漏,因爲它在一段時間後用完了。它是一個典型的場景。 我建議你使用JVisualVM(內置到SUN JDK6等內容)來剖析你的代碼...看看堆&看看哪些對象有最多的實例,總大小明智。 一旦你解決了這些代碼問題,我不認爲你會想增加更多的空間到你的堆。

RGDS -ksm

0

使用此命令將在VM: -

增加堆大小爲這樣:

-Xms256m -Xmx512m -XX:PermSize = 64M -XX:MaxPermSize參數= 1000M

這些值應該提供給虛擬機。

之後,重新啓動服務器。