0%

jcmd命令

jcmd工具可以向正在运行的JVM发送诊断请求,通过这些请求,我们可以获得 jvm 的系统变量、jdk版本号、线程信息等等

jcmd 命令集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
JFR.stop
JFR.start
JFR.dump
JFR.check
VM.native_memory
VM.check_commercial_features
VM.unlock_commercial_features
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.run_finalization
GC.run
VM.uptime
VM.flags
VM.system_properties
VM.command_line
VM.version
help
1
2
3
4
5
6
7
8
9
10
11
12
13
14
> jcmd 2125 help Thread.print

2125:
Thread.print
Print all threads with stacktraces.

Impact: Medium: Depends on the number of threads.

Permission: java.lang.management.ManagementPermission(monitor)

Syntax : Thread.print [options]

Options: (options must be specified using the <key> or <key>=<value> syntax)
-l : [optional] print java.util.concurrent locks (BOOLEAN, false)

常用命令

以pid 为 20877为例。

查看当前 pid 使用的 jdk 版本

jcmd 20877 VM.version

查看当前 pid 所有的系统属性

jcmd 20877 VM.system_properties

查看当前 pid 所有的flag

jcmd 20877 VM.flags

其他命令可见文末的参考链接。

参考

java问题跟踪工具
jcmd工具