tomcat記憶體溢位處理方法
tomcat記憶體溢位問題:
在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將丟擲此異常資訊。
JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定,
JVM在啟動的時候會自動設定Heap size的值,
其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。
可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設定。
在tomcat伺服器遇到這樣的問題: ---java.lang.OutOfMemoryError: PermGen space
這個異常和JVM預設劃分的記憶體上限是128M有關,如果你的業務足夠繁忙,128M是遠遠不夠的,
所以可以給JVM分配上1G甚至更多(視伺服器的配置而定),這樣就可以避免記憶體溢位。
解決方法:
1)linux下
編輯tomcat的catalina.sh檔案,在第一行的後面增加一句:
JAVA_OPTS='-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M'
注意:單引號不能少
-server表示以server模式執行(執行效率比預設的client高很多)
-Xms256m是最小記憶體
-Xmx512m是最大記憶體
其中的256與512可根據你自己的記憶體做相應調整
PermSize/MaxPermSize最小/最大堆大小
*一般報記憶體不足時,都是說這個太小,堆空間剩餘小於5%就會警告,可已適度把這個稍微設大一點,視自己機器記憶體而定
新增程式碼樣例:
#!/bin/sh
JAVA_OPTS='-server -Xms1024m -Xmx1024m XX:PermSize=128M -XX:MaxPermSize=256M'
# -----------------------------
2)windows下
編輯tomcat的catalina.bat檔案,在第一行的後面增加一句:
set JAVA_OPTS=-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M
注意:沒有單引號
注:Java Options中每一行的最後不能有空格。