JVM優化之 -Xss -Xms -Xmx -Xmn 參數設置

XmnXmsXmxXss有什麼區別
Xmn、Xms、Xmx、Xss都是JVM對內存的配置參數,咱們能夠根據不一樣須要區修改這些參數,以達到運行程序的最好效果。多線程

-Xms 堆內存的最小大小,默認爲物理內存的1/64併發

-Xmx 堆內存的最大大小,默認爲物理內存的1/4spa

-Xmn 堆內新生代的大小。經過這個值也能夠獲得老生代的大小:-Xmx減去-Xmn操作系統

-Xss 設置每一個線程可以使用的內存大小,即棧的大小。在相同物理內存下,減少這個值能生成更多的線程,固然操做系統對一個進程內的線程數仍是有限制的,不能無限生成。線程棧的大小是個雙刃劍,若是設置太小,可能會出現棧溢出,特別是在該線程內有遞歸、大的循環時出現溢出的可能性更大,若是該值設置過大,就有影響到建立棧的數量,若是是多線程的應用,就會出現內存溢出的錯誤。線程

除了這些配置,JVM還有很是多的配置,經常使用的以下:遞歸

堆設置
-Xms:初始堆大小
-Xmx:最大堆大小
-Xmn:新生代大小
-XX:NewRatio:設置新生代和老年代的比值。如:爲3,表示年輕代與老年代比值爲1:3
-XX:SurvivorRatio:新生代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:爲3,表示Eden:Survivor=3:2,一個Survivor區佔整個新生代的1/5  
-XX:MaxTenuringThreshold:設置轉入老年代的存活次數。若是是0,則直接跳過新生代進入老年代
-XX:PermSize、-XX:MaxPermSize:分別設置永久代最小大小與最大大小(Java8之前)
-XX:MetaspaceSize、-XX:MaxMetaspaceSize:分別設置元空間最小大小與最大大小(Java8之後)
收集器設置
-XX:+UseSerialGC:設置串行收集器
-XX:+UseParallelGC:設置並行收集器
-XX:+UseParalledlOldGC:設置並行老年代收集器
-XX:+UseConcMarkSweepGC:設置併發收集器
垃圾回收統計信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
並行收集器設置
-XX:ParallelGCThreads=n:設置並行收集器收集時使用的CPU數。並行收集線程數。
-XX:MaxGCPauseMillis=n:設置並行收集最大暫停時間
-XX:GCTimeRatio=n:設置垃圾回收時間佔程序運行時間的百分比。公式爲1/(1+n)
併發收集器設置
-XX:+CMSIncrementalMode:設置爲增量模式。適用於單CPU狀況。
-XX:ParallelGCThreads=n:設置併發收集器新生代收集方式爲並行收集時,使用的CPU數。並行收集線程數。進程

相關文章
相關標籤/搜索