1. 程式人生 > 其它 >JVM優化之 -Xss -Xms -Xmx -Xmn 引數設定

JVM優化之 -Xss -Xms -Xmx -Xmn 引數設定

XmnXmsXmxXss有什麼區別


Xmn、Xms、Xmx、Xss都是JVM對記憶體的配置引數,我們可以根據不同需要區修改這些引數,以達到執行程式的最好效果。

-Xms 堆記憶體的初始大小,預設為實體記憶體的1/64

-Xmx 堆記憶體的最大大小,預設為實體記憶體的1/4

-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數。並行收集執行緒數。
————————————————
版權宣告:本文為CSDN博主「NFE_W」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/yrwan95/article/details/82826519