若系統運行一段時間後無法連線,且tomcat或jboss的log裡出現java.lang.OutOfMemoryError: Java heap space,應如何避免此狀況? (2008/11/25)

問題編號: 
Q35
A: 

通常是伺服器使用的記憶體不足的問題,以致系統能處理的檔案太小。
若使用的伺服器為Tomcat,可設定環境變數CATALINA_OPTS為:

-Xms256m -Xmx1024m

若您是使用catalina.sh指令啟動tomcat系統,您可在catalina.sh檔案啟始段加上以下設定:

JAVA_OPTS="-Xms256m -Xmx2048m"

-Xms為伺服器會使用的最低記憶體大小,-Xmx為伺服器能使用的最大記憶體大小,可自行因硬體設備而調整。設定環境變數後重起Tomcat即可。
 

若您是使用windows系統,請在$TOMCAT/bin目錄下執行tomcat5w.exe,於介面中的"Java tab"設定(如下圖)。若您設定的最大可用記憶體超過系統可允許的值,tomcat將無法重新啟動,請設小一點的值。
最小可用之記憶體也不建議調得太大,以免影響系統中其他應用系統之使用。
最大可用記憶體也可以視系統狀況設定更大的值,但建議請勿超出系統記憶體容量的1/2。
例如系統有4G RAM,可設定-Xms256m -Xmx1024m)
但windows xp 32 單一支應用程式 所可以配置到的記憶體有 2G的限制,所以設定請小於2048M。

若您安裝的tomcat沒有catalina.bat或startup.bat或tomcat5w.ext,可依下列程序設定記憶體參數:

1. 打開DOS視窗,到目錄 %TOMCAT_HOME%/bin/ ,執行指令 service install 按下Enter
2. 鍵入 tomcat5 //IS//Tomcat5 按Enter
3. 到Windows的service 可以看見多一個「Apache Tomcat」的service
4. 欲改變起始及最大配置記憶體,可用以下指令 
tomcat5 //US//Tomcat5 --JvmMs=256 --JvmMx=2048

問題類型: