JVM調優參數總結

JVM調優參數總結

Xmn、Xms、Xmx、Xss都是JVM對內存的配置參數。

堆內存分配

JVM初始分配的內存由-Xms指定,默認是物理內存的1/64
JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4
默認空餘堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減少堆直到 -Xms的最小限制。
因此服務器一般設置-Xms、-Xmx相等以避免在每次GC 後調整堆的大小。對象的堆內存由稱爲垃圾回收器的自動內存管理系統回收。

堆設置

-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數。並行收集線程數。

非堆內存分配:

JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;
由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章