JVM系列第12講:JVM參數之查看JVM參數


今天要說的是如何查看 JVM 中已經設置的參數,包括顯示參數和隱式參數。

打印顯式參數 -XX:+PrintVMOptions

該參數表示程序運行時,打印虛擬機接受到的命令行顯式參數。我們用下面的命令運行程序:

java  -XX:+UseSerialGC -XX:+PrintVMOptions com.chenshuyi.ClassLoadDemo

輸出結果:

VM option '+UseSerialGC'
VM option '+PrintVMOptions'
Hello, I'm chenshuyi

可以看到我們設置了+UseSerialGC+PrintVMOptions兩個參數,最后運行時也將這兩個參數打印出來了。

打印顯式隱式參數 -XX:+PrintCommandLineFlags

該參數打印傳遞給虛擬機的顯式和隱式參數。我們用下面的命令運行程序:

java  -XX:+UseSerialGC -XX:+PrintCommandLineFlags com.chenshuyi.ClassLoadDemo

輸出結果:

-XX:InitialHeapSize=134217728 -XX:MaxHeapSize=2147483648 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseSerialGC
Hello, I'm chenshuyi

可以看到程序不僅輸出了我們顯式設置的參數,還將虛擬機默認的參數打印了出來,包括初始堆大小(134217728),最大堆大小(2147483648)等。

打印所有系統參數 -XX:+PrintFlagsFinal

該參數會打印所有的系統參數的值。我們用下面的命令運行程序:

java  -XX:+UseSerialGC -XX:+PrintFlagsFinal com.chenshuyi.ClassLoadDemo  > jvm_flag_final.txt

之后打開 jvm_flag_final.txt 文件,可以看到有 800 多行,這是因為程序將虛擬機的所有參數都打印了出來。下面列幾個我們常用的參數看看就可以:

...
uintx InitialHeapSize := 134217728 {product}
...
uintx MaxMetaspaceSize = 18446744073709547520 {product}
...
uintx MetaspaceSize = 21807104 {pd product}

從上面我們列出的部分參數可以看到,上面三個參數分別是設置初始堆大小、元空間最大大小、初始元空間大小。

最后,讓我們來總結一下,加強記憶。

  • -XX:+PrintVMOptions 程序運行時,打印虛擬機接受到的命令行顯式參數。
  • -XX:+PrintCommandLineFlags 打印傳遞給虛擬機的顯式和隱式參數。
  • -XX:+PrintFlagsFinal 打印所有的系統參數的值

JVM系列目錄


如果只是看,其實無法真正學會知識的。為了幫助大家更好地學習,我建了一個虛擬機群,專門討論學習 Java 虛擬機方面的內容,每周針對我所發文章進行討論答疑。如果你有興趣,關注「Java技術精選」公眾號,通過右下角菜單「入群交流」加我好友,小助手會拉你入群。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM