一、基本情况

jinfo (Configuration Info for Java)
查看虚拟机配置参数信息,也可用于调整虚拟机的配置参数

在很多情况下,Java应用程序不会指定所有的Java虚拟机参数。而此时,开发人员可能不知道某一个具体的Java虚拟机参数的默认值。在这种情况下,可能需要通过查找文档获取某个参数的默认值。这个查找过程可能是非常艰难的。但有了jinfo工具,开发人员可以很方便地找到Java虚拟机参数的当前值。
image.png
官方帮助文档:
https://docs.oracle.com/en/java/javase/11/tools/jinfo.html

二、基本语法

它的基本使用语法为:
jinfo [ options ] pid

说明: java进程ID必须要加上
image.png

2.1、查看

2.1.1、jinfo -sysprops PID

展示当前进程程序的系统信息
可以查看由System.getProperties()取得的参数
image.png

2.1.2、jinfo -flags PID

可以查看曾经赋过值的一些参数
image.png

2.1.3、jinfo -flag 具体参数 IPD

查看某个java进程的具体参数的值
jinfo -flag UseParallelGC 25024查看是否使用平行的垃圾回收器,+代表已使用
image.png
-XX:-UseSerialGC:没有使用串行的垃圾回收器
image.png
jinfo -flag MaxHeapSize 25024最大堆空间大小
image.png

2.2、修改

jinfo不仅可以查看运行时某一个Java虚拟机参数的实际取值,甚至可以在运行时修改部分参数,并使之立即生效。

但是,并非所有参数都支持动态修改。参数只有被标记为manageable的flag可以被实时修改。其实,这个修改能力是极其有限的。
#可以查看被标记为manageable的参数
java -XX:+PrintFlagsFinal -version | grep manageable
image.png

2.2.1、针对boolea类型

jinfo -flag [+|-] 具体参数 PID
image.png

2.2.2、针对非boolean类型

jinfo -flag 具体参数 = 具体参数值 PID
image.png

三、拓展

3.1、java -XX:+PrintFlagsInitial

查看所有JVM参数启动的初始值

3.2、java -XX:+PrintFlagsFinal

查看所有JVM参数的最终值
image.png
这个时候在F盘会生成一个pint.txt文件
image.png

3.3、java -XX:+PrintCommandLineFlags

查看那些已经被用户或者JVM设置过的详细的XX参数的名称和值