-Xss規定了每個線程堆棧的大小。一般情況下256K是足夠了。影響了此進程中併發線程數大小。
-Xms初始的Heap的大小。
-Xmx最大Heap的大小。
在很多情況下,-Xms和-Xmx設置成一樣的。這麼設置,是因爲當Heap不夠用時,會發生內存抖動,影響程序運行穩定性。
Xmn Xms Xmx Xss有什麼區別
Xmn、Xms、Xmx、Xss都是JVM對內存的配置參數,我們可以根據不同需要區修改這些參數,以達到運行程序的最好效果。
-Xms 堆內存的最小大小,默認爲物理內存的1/64
-Xmx 堆內存的最大大小,默認爲物理內存的1/4
-Xmn 堆內新生代的大小。通過這個值也可以得到老生代的大小:-Xmx減去-Xmn
-Xss 設置每個線程可使用的內存大小,即棧的大小。在相同物理內存下,減小這個值能生成更多的線程,當然操作系統對一個進程內的線程數還是有限制的,不能無限生成。線程棧的大小是個雙刃劍,如果設置過小,可能會出現棧溢出,特別是在該線程內有遞歸、大的循環時出現溢出的可能性更大,如果該值設置過大,就有影響到創建棧的數量,如果是多線程的應用,就會出現內存溢出的錯誤。
除了這些配置,JVM還有非常多的配置,常用的如下:
1、堆設置
-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以後)
2、收集器設置
-XX:+UseSerialGC:設置串行收集器
-XX:+UseParallelGC:設置並行收集器
-XX:+UseParalledlOldGC:設置並行老年代收集器
-XX:+UseConcMarkSweepGC:設置併發收集器
3、垃圾回收統計信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
4、並行收集器設置
-XX:ParallelGCThreads=n:設置並行收集器收集時使用的CPU數。並行收集線程數。
-XX:MaxGCPauseMillis=n:設置並行收集最大暫停時間
-XX:GCTimeRatio=n:設置垃圾回收時間佔程序運行時間的百分比。公式爲1/(1+n)
5、併發收集器設置
-XX:+CMSIncrementalMode:設置爲增量模式。適用於單CPU情況。
-XX:ParallelGCThreads=n:設置併發收集器新生代收集方式爲並行收集時,使用的CPU數。並行收集線程數。
---------------------
原文:https://blog.csdn.net/yrwan95/article/details/82826519