jinfo命令

    生成配置信息。它可以用来查看正在运行的java应用程序的扩展参数(JVM中-X标示的参数),也支持在运行时修改部分参数。
如遇到Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can’t attach to the process错误,可尝试使用root权限。

概要

jinfo [option] pid

jinfo [option] executable core

jinfo [option] [servier-id*] *remote-hostname-or-IP

option

     命令行选项。详见Options

pid

    目标java进程id。使用jps命令可以获得本机Java进程列表。

executable

    从核心文件产生的java可执行命令。

core

    要打印配置信息的核心文件。

remote-hostname-or-IP

    远程debug服务器的主机名或IP地址。详见jsaebugd。

server-id

    多个调试服务器在同一个远程主机上运行时使用的可选唯一标识。

描述

    jinfo命令打印一个特定Java进程或核心文件或远程调试服务器的Java配置信息。配置信息中包含了Java系统属性值和JVM命令行标志(flag)。如果进程运行在64位虚拟机上,则可能需要使用-J-d64选项(jinfo -J-d64 -sysprops pid)。

    该工具可能在未来的版本被移除。

Options

no-option

    打印命令行标志和系统属性值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-> % sudo jinfo 3431
Attaching to process ID 3431, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.66-b17
Java System Properties:

java.runtime.name = Java(TM) SE Runtime Environment
...
sun.cpu.isalist =

VM Flags:
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=268435456 -XX:MaxDirectMemorySize=100663296 -XX:MaxHeapFreeRatio=100 -XX:MaxHeapSize=268435456 -XX:MaxNewSize=134217728 -XX:MetaspaceSize=62914560 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=134217728 -XX:OldSize=134217728 -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:SurvivorRatio=10 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
Command line: -Xms256m -Xmx256m -XX:MaxDirectMemorySize=96m -XX:MetaspaceSize=60m -Xmn128m -XX:SurvivorRatio=10 -Xloggc:logs/gc.log

-flag name

    打印特定标志的名称和值。

1
2
-> % jinfo -flag MaxHeapFreeRatio 3431
-XX:MaxHeapFreeRatio=100

-flag [+|-]name

    启用或关闭命令行标志(布尔型)。

1
2
3
4
5
-> % jinfo -flag HeapDumpOnOutOfMemoryError 3431
-XX:-HeapDumpOnOutOfMemoryError
-> % jinfo -flag +HeapDumpOnOutOfMemoryError 3431
-> % jinfo -flag HeapDumpOnOutOfMemoryError 3431
-XX:+HeapDumpOnOutOfMemoryError

-flag name=value

    设定命令行标志的值。

1
2
3
4
5
-> % jinfo -flag MaxHeapFreeRatio 3431
-XX:MaxHeapFreeRatio=100
-> % jinfo -flag MaxHeapFreeRatio=80 3431
-> % jinfo -flag MaxHeapFreeRatio 3431
-XX:MaxHeapFreeRatio=80

-flags

    打印JVM的命令行标志。

1
2
3
4
5
6
7
-> % sudo jinfo -flags 3431
Attaching to process ID 3431, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.66-b17
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=268435456 -XX:MaxDirectMemorySize=100663296 -XX:MaxHeapSize=268435456 -XX:MaxNewSize=134217728 -XX:MetaspaceSize=62914560 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=134217728 -XX:OldSize=134217728 -XX:+PrintGC -XX:+PrintGCTimeStamps -XX:SurvivorRatio=10 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
Command line: -Xms256m -Xmx256m -XX:MaxDirectMemorySize=96m -XX:MetaspaceSize=60m -Xmn128m -XX:SurvivorRatio=10 -Xloggc:logs/gc.log

-sysprops

    打印Java系统属性值。

1
2
3
4
5
6
7
8
9
10
11
12
-> % sudo jinfo -sysprops 3431
Attaching to process ID 3431, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.66-b17
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.66-b17
...
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.cpu.isalist =

-h|-help

    打印帮助信息。

提示:
    可通过java -XX:+PrintFlagsFinal -version|grep manageable打印出哪些标志位可被动态修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-> % java -XX:+PrintFlagsFinal -version|grep manageable
intx CMSAbortablePrecleanWaitMillis = 100 {manageable}
intx CMSTriggerInterval = -1 {manageable}
intx CMSWaitDuration = 2000 {manageable}
bool HeapDumpAfterFullGC = false {manageable}
bool HeapDumpBeforeFullGC = false {manageable}
bool HeapDumpOnOutOfMemoryError = false {manageable}
ccstr HeapDumpPath = {manageable}
uintx MaxHeapFreeRatio = 100 {manageable}
uintx MinHeapFreeRatio = 0 {manageable}
bool PrintClassHistogram = false {manageable}
bool PrintClassHistogramAfterFullGC = false {manageable}
bool PrintClassHistogramBeforeFullGC = false {manageable}
bool PrintConcurrentLocks = false {manageable}
bool PrintGC = false {manageable}
bool PrintGCDateStamps = false {manageable}
bool PrintGCDetails = false {manageable}
bool PrintGCID = false {manageable}
bool PrintGCTimeStamps = false {manageable}
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

参考: