java xms xmx xss xmn作用
阿新 • • 發佈:2022-03-20
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數。並行收集執行緒數