你說你做過 JVM 調優和參數配置,請問如果盤點查看 JVM 系統默認值?

點擊上方“Coder編程”,選擇“置頂公衆號”

技術文章第一時間送達!

你說你做過 JVM 調優和參數配置,請問如果盤點查看 JVM 系統默認值?

每天進步一點,不做curd工程師

JVM 的參數類型

標配參數

    -version
    -help

X 參數(瞭解)

    -Xint:解釋執行
    -Xcomp:第一次使用就編譯成本地代碼
    -Xmixed:混合模式

XX 參數

Boolean 類型:-XX:+ 或者 - 某個屬性值(+ 表示開啓,- 表示關閉)
           -XX:+PrintGCDetails:打印 GC 收集細節
           -XX:-PrintGCDetails:不打印 GC 收集細節
           -XX:+UseSerialGC:使用了串行收集器
           -XX:-UseSerialGC:不使用了串行收集器
  KV 設置類型:-XX:key=value
           -XX:MetaspaceSize=128m
           -XX:MaxTenuringThreshold=15

jinfo 舉例,如何查看當前運行程序的配置

java public class HelloGC { public static void main(String[] args) { System.out.println("hello GC..."); try { Thread.sleep(Integer.MAX_VALUE); } catch (InterruptedException e) { e.printStackTrace(); } } }
       我們可以使用 jps -l命令,查出進程id

        1923 org.jetbrains.jps.cmdline.Launcher
        1988 sun.tools.jps.Jps
        1173 org.jetbrains.kotlin.daemon.KotlinCompileDaemon
        32077 com.intellij.idea.Main
        1933 com.cuzz.jvm.HelloGC
        32382 org.jetbrains.idea.maven.server.RemoteMavenServer

在使用jinfo -flag PrintGCDetails 1933 命令查看

        -XX:-PrintGCDetails

可以看出默認是不打印 GC 收集細節
也可是使用jinfo -flags 1933 查看所以的參數
兩個經典參數:-Xms 和 - Xmx(如 -Xms1024m)

            -Xms 等價於 -XX:InitialHeapSize
            -Xmx 等價於 -XX:MaxHeapSize

盤點家底查看 JVM 默認值

查看初始默認值:-XX:+PrintFlagsInitial

    cuzz@cuzz-pc:~/Project/demo$ java -XX:+PrintFlagsInitial
    [Global flags]
         intx ActiveProcessorCount                      = -1                                  {product}
        uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
        uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
        uintx AdaptiveSizePausePolicy                   = 0                                   {product}
        uintx AdaptiveSizePolicyCollectionCostMargin    = 50                                  {product}
        uintx AdaptiveSizePolicyInitializingSteps       = 20                                  {product}
        uintx AdaptiveSizePolicyOutputInterval          = 0                                   {product}
        uintx AdaptiveSizePolicyWeight                  = 10                                  {product}
       ...

查看修改更新:-XX:+PrintFlagsFinal

    bool UsePSAdaptiveSurvivorSizePolicy           = true                                {product}
    bool UseParNewGC                               = false                               {product}
    bool UseParallelGC                            := true                                {product}
    bool UseParallelOldGC                          = true                                {product}
    bool UsePerfData                               = true                                {product}
    bool UsePopCountInstruction                    = true                                {product}
    bool UseRDPCForConstantTableBase               = false                               {C2 product}

= 與 := 的區別是,一個是默認,一個是人物改變或者 jvm 加載時改變的參數
打印命令行參數(可以看默認垃圾回收器):

-XX:+PrintCommandLineFlags

cuzz@cuzz-pc:~/Project/demo$ java -XX:+PrintCommandLineFlags -XX:InitialHeapSize=128789376 -XX:MaxHeapSize=2060630016 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC

推薦

文末

歡迎關注個人微信公衆號:Coder編程
歡迎關注Coder編程公衆號,主要分享數據結構與算法、Java相關知識體系、框架知識及原理、Spring全家桶、微服務項目實戰、DevOps實踐之路、每日一篇互聯網大廠面試或筆試題以及PMP項目管理知識等。更多精彩內容正在路上~
新建了一個qq羣:315211365,歡迎大家進羣交流一起學習。謝謝了!也可以介紹給身邊有需要的朋友。

文章收錄至
Github: https://github.com/CoderMerlin/coder-programming
Gitee: https://gitee.com/573059382/coder-programming
歡迎關注並star~

微信公衆號

                我知道你 “在看

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