0%

jinfo 基本命令

JDK 的 bin 目录下为 Java 开发人员提供了很多实用的小工具,很多场景下都会用到它们,比如:打包、部署、签名、调试、监控、运维等。本文介绍其中一款:

jinfo (Configuration Info for Java): Java 配置信息工具

功能

实时查看和调整虚拟机各项参数:

  • 使用 jps -v 命令可以查看虚拟机启动时显式指定的参数列表,而使用 jinfo -flag 命令可以查询未被显式指定的参数的系统默认值。

    • 对于 JDK 6 及以上版本,还可以使用 java- XX:+PrintFlagsFinal 查看参数默认值(命令: $ java -XX:+PrintFlagsFinal -version)。
  • 使用 jinfo -sysprops 命令可以打印虚拟机进程的 System.getProperties() 的内容。JDK 6 之后,该命令除了提供信息查询功能,还加入了在运行期修改部分参数值的能力(使用 -flag[+/-]name 或 -flag name=value 在运行期修改一部分运行期可写的虚拟机参数值)。

命令格式

1
$ jinfo [ option ] pid

option

选项 作用
-flag <name> 打印虚拟机标记参数的值
-flag [+/-]<name> 开启或关闭虚拟机标记参数
-flag <name>=<value> 设置虚拟机标记参数
-flags 输出虚拟机参数
-sysprops 输出 Java 系统属性
<no option> 输出以上所有

执行样例

-flag <name>

查询 CMSInitiatingOccupancyFraction 参数值

1
$ jinfo -flag CMSInitiatingOccupancyFraction 5511

-flag [+/-]<name>

开启 / 关闭 PrintGC

1
2
3
4
5
$ jinfo -flag PrintGC 5511
$ jinfo -flag +PrintGC 5511
$ jinfo -flag PrintGC 5511
$ jinfo -flag -PrintGC 5511
$ jinfo -flag PrintGC 5511

-flag <name>=<value>

设置 HeapDumpPath

1
2
3
4
5
$ jinfo -flag HeapDumpPath 5511
$ jinfo -flag HeapDumpPath=/root/heapDump.hprof 5511
$ jinfo -flag HeapDumpPath 5511
$ jinfo -flag HeapDumpPath= 5511
$ jinfo -flag HeapDumpPath 5511

​但是不是每个参数都可以被动态修改的,比如:

1
jinfo -flag CMSInitiatingOccupancyFraction=1 5511

-flags

输出虚拟机参数

1
$ jinfo -flags

-sysprops

输出 Java 系统属性

1
$ jinfo -sysprops 5511

<no option>

输出以上所有

1
$ jinfo 5511

欢迎关注我的其它发布渠道