参考博客:https://www.jianshu.com/p/8d8aef212b25
jinfo(ConfigurationInfoforJava)的作用是实时地查看和调整虚拟机各项参数,使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表。
但如果想知道未被显式指定的参数的系统默认值,除了去找资料外,就只能使用jinfo的-flag选项进行查询。
- no option 输出全部的参数和系统属性
- -flag name 输出对应名称的参数
- -flag [+|-]name 开启或者关闭对应名称的参数
我们可以通过jinfo实时的修改虚拟机的参数,但是不是任何命令都可以修改,可以修改的参数我们先来执行这个命令:java -XX:+PrintFlagsFinal -version,会列出当前机器支持的所有参数,那么用jinfo可以修改的参数是什么呢?
只有最后一列显示manageable的这一列才能进行修改。
仔细查看发现可修改的参数其实并不多,jvm的运行内存一旦在运行时确定下来,那么就无法修改。但是无法一些错误信息没有记录,或者是处于关闭状态,还是可以修改的
例如我们来查询idea的进程是否开启了GC日志信息的详细打印,我们可以执行这样的命令:jinfo -flag PrintGCDetails 17312,从结果中我们可以看出是没有开启打印GC详细信息的。
jinfo还可以使用-sysprops选项把虚拟机进程的System.getProperties()的内容打印出来,可以执行命令:jinfo -sysprops 17312。
jinfo -flags:会打印当前该线程所有相关的参数,例如我们要来打印idea这个进程的所有相关参数,我们来执行命令:jinfo -flags 40416会列出JVM的版本,显示当前idea他的非缺省值的东西(也就是你修改过的),还有Command Line 代表的是命令行形式传递给idea这个进程的一些参数
查看最大堆内存 jinfo -flag MaxHeapSize 17312
查看所使用的垃圾收集器
jinfo -flag UseConcMarkSweepGC 17312
jinfo -flag UseG1GC 17312
jinfo -flag UseParallelGC 17312
可以看出所使用的垃圾回收器是 ParallelGC