性能文章>JVM系列第12讲:JVM参数之查看JVM参数>

JVM系列第12讲:JVM参数之查看JVM参数原创

234813

今天要说的是如何查看 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}


从上面我们列出的部分参数可以看到,上面三个参数分别是设置初始堆大小、元空间最大大小、初始元空间大小。

最后,让我们来总结一下,加强记忆。

参数 column2
-XX:+PrintVMOptions 程序运行时,打印虚拟机接受到的命令行显式参数。
-XX:+PrintCommandLineFlags 打印传递给虚拟机的显式和隐式参数。
-XX:+PrintFlagsFinal 打印所有的系统参数的值
点赞收藏
分类:标签:
树哥聊编程
请先登录,查看1条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

万字完整深入解析JVM面试必备,原来这就是和年薪百万的差距

万字完整深入解析JVM面试必备,原来这就是和年薪百万的差距

搭稳Netty开发的地基,用漫画帮你分清同步异步阻塞非阻塞

搭稳Netty开发的地基,用漫画帮你分清同步异步阻塞非阻塞

为什么 JVM 叫做基于栈的 RISC 虚拟机

为什么 JVM 叫做基于栈的 RISC 虚拟机

如何随心所欲调试HotSpot VM源代码?(改造为CMakeLists项目)

如何随心所欲调试HotSpot VM源代码?(改造为CMakeLists项目)

朋友们,就在今天,JDK 21,它终于带着重磅新特性正式发布了!!!

朋友们,就在今天,JDK 21,它终于带着重磅新特性正式发布了!!!

13 轻量级锁的重入 以及 线程1获取轻量级锁并释放线程2获取锁 的调试

13 轻量级锁的重入 以及 线程1获取轻量级锁并释放线程2获取锁 的调试

3
1