-Xmn -Xms -Xmx -Xss

-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

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