1.堆大小
-Xms和-Xmx用於指定堆大小,我們需要將他們倆設置爲一樣的值,以避免在GC後重新調整堆的大小。
2.年輕代大小
-XX:NewSize=?和–XX:MaxNewSize=?,年輕代大小建議設置爲堆大小的1/3或者1/4,兩個值大小一樣。設置年輕代大小相當重要,如果年輕代設置小了,那麼一些可以生存週期短的對象可能被移到年老代,導致Full GC,而設置太大,也會引起stop the world。
3.方法區大小
-XX:PermSize=256m和-XX:MaxPermSize=256m,方法區大小不會影響性能,只要你設置的值保證應用不報OOM之類的錯誤即可。
4.GC日誌
-Xloggc:$CATALINA_BASE/logs/gc.log、-XX:+PrintGCDetails、-XX:+PrintGCDateStamps、XX:+PrintHeapAtGC、-XX:+PrintTenuringDistribution,儘可能多的記錄一些GC日誌,這樣可以全面的分析系統行爲。
5.GC算法
-XX:+UseParNewGC、-XX:+CMSParallelRemarkEnabled、-XX:+UseConcMarkSweepGC、-XX:CMSInitiatingOccupancyFraction=75,這只是一般系統中經常用的參數,你還需要根據你的系統情況選擇最適合你的系統。
6.堆快照
-XX:+HeapDumpOnOutOfMemoryError和-XX:HeapDumpPath=$CATALINA_BASE/logs。
7.OOM發生之後的操作
OOM後關閉服務器:-XX:OnOutOfMemoryError=$CATALINA_HOME/bin/stop.sh
OOM後重啓服務器: -XX:OnOutOfMemoryError=$CATALINA_HOME/bin/restart.sh