天天看點

JVM - 列出JVM預設參數及運作時生效參數

文章目錄

  • Pre
  • -XX:+PrintFlagsInitial 列出JVM參數的預設值
  • -XX:+PrintFlagsFinal 列出運作程式時生效的值
  • -XX:+PrintCommandLineFlags 列出被使用者或者JVM優化設定過的詳細的XX參數的名稱和值
  • 列舉附加隐藏參數
  • jinfo 檢視正在運作的Java應用程式的擴充參數
    • jps
    • jinfo
JVM - 列出JVM預設參數及運作時生效參數

Pre

有的時候,想看下自己沒有設定的JVM參數的值, 或者有的時候想看下JVM某個參數的預設值 ,亦或想看下使用者或者JVM修改的JVM參數 ?

咋辦 ?

JVM在1.6.0_14以後提供了幾個參數可以列印出來所有XX參數和對應的值

-XX:+PrintFlagsInitial 表示列印出所有參數選項的預設值
 -XX:+PrintFlagsFinal 表示列印出所有參數選項在運作程式時生效的值
           

執行的話

java -XX:+PrintFlagsInitial
java -XX:+PrintFlagsFinal 

           

-XX:+PrintFlagsInitial 列出JVM參數的預設值

Java誕生了25年+, N多個參數 ,鬼記得住~

我們隻需要直到常用的,會找就可以了。

我這用的1.8.0_181 列舉出了 866個

部分截圖如下

JVM - 列出JVM預設參數及運作時生效參數
  • 第一清單示參數的資料類型
  • 第二列是名稱
  • 第三列”=”表示第四列是參數的預設值,如果是”:=” 表明了參數被使用者或者JVM指派了
  • 第四列為值
  • 第五列是參數的類别
JVM - 列出JVM預設參數及運作時生效參數

”:=” 表明了參數被使用者或者JVM指派了, 也間接證明了Java8預設的垃圾回收器是Parallel + Parallel Old .

JVM - 列出JVM預設參數及運作時生效參數

-XX:+PrintCommandLineFlags 列出被使用者或者JVM優化設定過的詳細的XX參數的名稱和值

這一步其實就是列出

-XX:+PrintFlagsFinal

的結果中第三列有":="的參數 。

JVM - 列出JVM預設參數及運作時生效參數

也可以了解為列印指令行參數

-XX:+UnlockDiagnosticVMOptions  解鎖診斷參數

-XX:+UnlockExperimentalVMOptions   解鎖實驗參數

-XX:+UnlockInternalVMOptions 解鎖内部參數 
           

這個就是隐藏副本了 ,願君多留意~

jinfo 檢視正在運作的Java應用程式的擴充參數

當然了 還有其他參數 也可以看

jps + jinfo  
           

[root@artisan ~]# jps --help
illegal argument: --help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:<port>]

           

最常用的jps , 檢視PID

輸出更多資訊

jps -v 
           
[root@artisan ~]# jps
5811 kooteam.jar
6043 Jps
[root@artisan ~]# jps -v
5811 kooteam.jar -Xms1024m -Xmx1024m
6054 Jps -Denv.class.path=.:/usr/java/jdk1.8.0_221-amd64/jre/lib:/usr/java/jdk1.8.0_221-amd64/lib:/usr/java/jdk1.8.0_221-amd64/lib/tools.jar -Dapplication.home=/usr/java/jdk1.8.0_221-amd64 -Xms8m
[root@artisan ~]# 

           

[root@artisan ~]# jinfo --help
Usage:
    jinfo [option] <pid>
        (to connect to running process)
    jinfo [option] <executable <core>
        (to connect to a core file)
    jinfo [option] [server_id@]<remote server IP or hostname>
        (to connect to remote debug server)

where <option> is one of:
    -flag <name>         to print the value of the named VM flag
    -flag [+|-]<name>    to enable or disable the named VM flag
    -flag <name>=<value> to set the named VM flag to the given value
    -flags               to print VM flags
    -sysprops            to print Java system properties
    <no option>          to print both of the above
    -h | -help           to print this help message
[root@artisan ~]# 

           
[root@artisan ~]# jinfo -flags 5811
Attaching to process ID 5811, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.221-b11
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=1073741824 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=357892096 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=357892096 -XX:OldSize=715849728 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps 
Command line:  -Xms1024m -Xmx1024m
[root@artisan ~]# 

           
[root@artisan ~]# jinfo -sysprops  5811
Attaching to process ID 5811, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.221-b11
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.221-b11
sun.boot.library.path = /usr/java/jdk1.8.0_221-amd64/jre/lib/amd64
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
path.separator = :
file.encoding.pkg = sun.io
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.os.patch.level = unknown
sun.java.launcher = SUN_STANDARD
user.country = US
user.dir = /root
java.vm.specification.name = Java Virtual Machine Specification
java.runtime.version = 1.8.0_221-b11
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
os.arch = amd64
java.endorsed.dirs = /usr/java/jdk1.8.0_221-amd64/jre/lib/endorsed
line.separator = 

java.io.tmpdir = /tmp
java.vm.specification.vendor = Oracle Corporation
os.name = Linux
sun.jnu.encoding = UTF-8
java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
sun.nio.ch.bugLevel = 
java.specification.name = Java Platform API Specification
java.class.version = 52.0
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
os.version = 3.10.0-123.el7.x86_64
user.home = /root
user.timezone = Asia/Shanghai
java.awt.printerjob = sun.print.PSPrinterJob
file.encoding = UTF-8
java.specification.version = 1.8
user.name = root
java.class.path = ./kooteam.jar
java.vm.specification.version = 1.8
sun.arch.data.model = 64
sun.java.command = ./kooteam.jar
java.home = /usr/java/jdk1.8.0_221-amd64/jre
user.language = en
java.specification.vendor = Oracle Corporation
awt.toolkit = sun.awt.X11.XToolkit
java.vm.info = mixed mode
java.version = 1.8.0_221
java.ext.dirs = /usr/java/jdk1.8.0_221-amd64/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path = /usr/java/jdk1.8.0_221-amd64/jre/lib/resources.jar:/usr/java/jdk1.8.0_221-amd64/jre/lib/rt.jar:/usr/java/jdk1.8.0_221-amd64/jre/lib/sunrsasign.jar:/usr/java/jdk1.8.0_221-amd64/jre/lib/jsse.jar:/usr/java/jdk1.8.0_221-amd64/jre/lib/jce.jar:/usr/java/jdk1.8.0_221-amd64/jre/lib/charsets.jar:/usr/java/jdk1.8.0_221-amd64/jre/lib/jfr.jar:/usr/java/jdk1.8.0_221-amd64/jre/classes
java.vendor = Oracle Corporation
com.zaxxer.hikari.pool_number = 1
file.separator = /
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.cpu.isalist = 
[root@artisan ~]# 

           

繼續閱讀