JAVA JVM 參數詳解

JVM參數

JVM 三種類型參數

標配參數

比如-version-help-showversion等,幾乎不會改變。

X參數

用得不多,比如-Xint,解釋執行模式;-Xcomp,編譯模式;-Xmixed,開啓混合模式(默認)。

在這裏插入圖片描述

XX參數

重要,用於JVM調優。

JVM XX參數

布爾類型

公式-XX:+某個屬性-XX:-某個屬性,開啓或關閉某個功能。比如-XX:+PrintGCDetails,開啓GC詳細信息。

KV鍵值類型

公式-XX:屬性key=值value。比如-XX:Metaspace=128m-XX:MaxTenuringThreshold=15

JVM Xms/Xmx參數

-Xms-Xmx十分常見,用於設置初始堆大小最大堆大小。第一眼看上去,既不像X參數,也不像XX參數。實際上-Xms等價於-XX:InitialHeapSize-Xmx等價於-XX:MaxHeapSize。所以-Xms-Xmx屬於XX參數。

JVM 查看參數

查看某個參數

使用jps -l配合jinfo -flag JVM參數 pid 。先用jsp -l查看java進程,選擇某個進程號。

17888 org.jetbrains.jps.cmdline.Launcher
5360 org.jetbrains.idea.maven.server.RemoteMavenServer
18052 demo3.demo3

jinfo -flag PrintGCDetails 18052可以查看18052 Java進程的PrintGCDetails參數信息。

-XX:-PrintGCDetails

查看所有參數

使用jps -l配合jinfo -flags pid可以查看所有參數。

也可以使用java -XX:+PrintFlagsInitial

[Global flags]
     intx ActiveProcessorCount                      = -1            {product}
    uintx AdaptiveSizeDecrementScaleFactor          = 4             {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10            {product}
    uintx AdaptiveSizePausePolicy                   = 0             {product}
······
    uintx YoungPLABSize                             = 4096          {product}
     bool ZeroTLAB                                  = false         {product}
     intx hashCode                                  = 5             {product}

查看修改後的參數

使用java -XX:PrintFlagsFinal可以查看修改後的參數,與上面類似。只是修改過後是:=而不是=

查看常見參數

如果不想查看所有參數,可以用-XX:+PrintCommandLineFlags查看常用參數。

-XX:InitialHeapSize=132375936 -XX:MaxHeapSize=2118014976 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC

JVM 常用參數

-Xmx/-Xms

最大和初始堆大小。最大默認爲物理內存的1/4,初始默認爲物理內存的1/64。

-Xss

等價於-XX:ThresholdStackSize。用於設置單個棧的大小,系統默認值是0,不代表棧大小爲0。而是根據操作系統的不同,有不同的值。比如64位的Linux系統是1024K,而Windows系統依賴於虛擬內存。

-Xmn

新生代大小,一般不調。

-XX:MetaspaceSize

設置元空間大小。

-XX:+PrintGCDetails

輸出GC收集信息,包含GCFull GC信息。

-XX:SurvivorRatio

新生代中,Eden區和兩個Survivor區的比例,默認是8:1:1。通過-XX:SurvivorRatio=4改成4:1:1

-XX:NewRatio

老生代和新年代的比列,默認是2,即老年代佔2,新生代佔1。如果改成-XX:NewRatio=4,則老年代佔4,新生代佔1。

-XX:MaxTenuringThreshold

新生代設置進入老年代的時間,默認是新生代逃過15次GC後,進入老年代。如果改成0,那麼對象不會在新生代分配,直接進入老年代。

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