2011-05-13 63 views
0

我在通過jboss運行Web服務應用程序時面臨「內存不足錯誤異常」4.2 如何增加jboss的內存?這會解決問題嗎?Jboss內存問題

回答

0

您可以增加JBoss的內存,但一定要找出爲什麼它使用比預期更多的內存來確保問題不會回來咬你。

設置此發動的JBoss之前,你的外殼,同時進行實驗:

JAVA_OPTS="-Xms512m -Xmx1024m" 
+1

我完全同意這個答案,但只是一個警告:大多數JBoss啓動腳本重置JAVA_OPTS,因此設置環境變量像這樣在大多數情況下不起作用。 – 2011-05-13 07:12:36

+0

啊,很好。自從使用JBoss以來,一段時間了。 – 2011-05-13 07:15:22

+0

我目前的記憶是「-Xms128m -Xmx512m」,所以你推薦將它改爲「Xms512m -Xmx1024m」吧?這是否會影響其他系統資源(請注意,jboss當前是在Linux服務器上運行的)? – roy 2011-05-13 07:45:48

3

你應該首先確認是否內存使用未發現異常。如果不是,增加內存分配可能是一個好主意。在默認設置下,JBoss的默認內存分配很小。

你想確認內存不足是堆不足(它可能是permgen等,如果它是permgen,請參考一般的OOME(OutOfMemoryError)問題)。如果你使用的是Java 1.6,你只需要讀取異常消息來確定。

一旦您確認這是一個堆不足的情況,建議您確認在更大的堆大小之前沒有發生內存泄漏。要做到這一點,你可以附加一個像VisualVM一樣的堆監視器,並在壓力下監視堆的使用情況(有關更多信息,請參閱:http://olex.openlogic.com/wazi/2009/how-to-fix-memory-leaks-in-java/)。

完成此操作後,您確定自己的合法堆不足,可以編輯run.conf(Linux)或run.bat(Windows)以分配更多堆。您可以搜索JAVA_OPTS並將其更改爲-Xmx1024m

+0

我目前的記憶是「-Xms128m -Xmx512m」,所以你建議將它改爲「Xms512m -Xmx1024m」吧?這是否會影響其他系統資源(請注意,jboss當前是在Linux服務器上運行的)? – roy 2011-05-13 08:47:58

+2

@roy:如果您將Xmx設置爲例如1024m,這意味着java進程不會使用超過1GB的內存(加上一點點堆棧/ permgen等)。所以問題是,你可以節省多少,例如512MB的額外內存(因爲你以前使用512MB的堆,現在1GB)?要確定這一點,你可以使用命令'vmstat'並監視服務器是否有足夠的RAM。具體而言,您可以使用新配置將系統置於壓力之下,並監視服務器的內存使用情況。如果沒有交換髮生,你可能有足夠的內存來備用。 – 2011-05-13 16:46:44