初学JVM-查看JVM参数

    科技2022-08-29  99

    打印显式参数 -XX:+PrintVMOptions

    该参数表示程序运行时,打印虚拟机接受到的命令行显式参数。我们用下面的命令运行程序:

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

    输出结果:

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

    可以看到我们设置了+UseSerialGC和+PrintVMOptions两个参数,最后运行时也将这两个参数打印出来了。

    打印显式隐式参数 -XX:+PrintCommandLineFlags

    该参数打印传递给虚拟机的显式和隐式参数。我们用下面的命令运行程序:

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

    输出结果:

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

    可以看到程序不仅输出了我们显式设置的参数,还将虚拟机默认的参数打印了出来,包括初始堆大小(134217728),最大堆大小(2147483648)等。

    打印所有系统参数 -XX:+PrintFlagsFinal

    该参数会打印所有的系统参数的值。我们用下面的命令运行程序:

    java -XX:+UseSerialGC -XX:+PrintFlagsFinal com.sanmu.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 打印所有的系统参数的值
    Processed: 0.009, SQL: 9