開發項目中會遇到Tomcat內存溢出(java.lang.OutOfMemoryError: PermGen space)的問題,經過查找資料找到是經過設置Tomcat 啓動堆空間大小、年輕代大小、每一個線程大小參數進行調優的,具體以下:java
1、在Tomcat 啓動腳本(catalina.sh/catalina.bat)首行添加以下配置便可解決此問題服務器
JAVA_OPTS="-Xms2048m -Xmx2048m -Xmn1024m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=512m"spa
1:-Xms 堆空間初始大小
操作系統
2:-Xmx 堆空間最大數值
線程
3:-Xmn 年輕代的堆大小
內存
4:-Xss 每一個線程堆大小
開發
2、JVM堆大小的默認最大和最小值(參考)table
操做系統及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兩者中的最小值配置 |
3、通常性調優辦法
-Xmx 和-Xms 通常設置爲同樣大小,這樣能稍微提升GC的運行效率,由於他/她再也不須要估算堆是否須要調整大小了
4、暫時沒有了。。。