JVM調優之Tomcat啟動引數配置及詳解
阿新 • • 發佈:2019-01-01
開發專案中會遇到Tomcat記憶體溢位(java.lang.OutOfMemoryError: PermGen space)的問題,通過查詢資料找到是通過設定Tomcat 啟動堆空間大小、年輕代大小、每個執行緒大小引數進行調優的,具體如下:
一、在Tomcat 啟動指令碼(catalina.sh/catalina.bat)首行新增如下配置即可解決此問題
JAVA_OPTS="-Xms2048m -Xmx2048m -Xmn1024m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=512m"
1:-Xms 堆空間初始大小
2:-Xmx 堆空間最大數值
3:-Xmn 年輕代的堆大小
4:-Xss 每個執行緒堆大小
二、JVM堆大小的預設最大和最小值(參考)
作業系統及JVM型別 | 初始堆的大小(Xms) | 最大堆的大小(Xmx) |
Linux/Solaris,32位客戶端 | 16MB | 256MB |
Linux/Solaris,32位伺服器 | 64MB | 取1GB和實體記憶體大小1/4二者中的最小值 |
Linux/Solaris,64位伺服器 | 取512MB和實體記憶體大小1/64二者中的最小值 | 取32GB和實體記憶體大小1/4二者中的最小值 |
MacOS,64位伺服器型JVM | 64MB | 取1GB和實體記憶體大小1/4二者中的最小值 |
32位Window系統,客戶端型JVM | 16MB |
256MB |
64位Window系統,客戶端型JVM | 64MB |
1GB和實體記憶體大小1/4二者中的最小值 |
三、一般性調優辦法
-Xmx 和-Xms 一般設定為一樣大小,這樣能稍微提高GC的執行效率,因為他/她不再需要估算堆是否需要調整大小了