jcmd
发送诊断命令请求到正在运行的Java虚拟机(JVM)。它必须和JVM运行在同一台机器上,并且与启动JVM用户具有相同的组权限。
- 用法
- 列出当前所有运行的 java 进程:
jcmd -l|<none>
- 列出当前运行的 java 进程可以执行的操作:
jcmd PID help
- 列出当前所有运行的 java 进程:
jcmd 664 help
664:
The following commands are available:
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
GC.rotate_log
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
- 参数含义
命令 | 描述 |
---|---|
jcmd PID VM.uptime | 查看 JVM 的启动时长 |
jcmd PID GC.class_histogram | 查看 JVM 的类信息,这个可以查看每个类的实例数量和占用空间大小。 |
jcmd PID Thread.print | 查看 JVM 的Thread Dump |
jcmd PID GC.heap_dump FILE_NAME | 查看 JVM 的Heap Dump,注意,如果只指定文件名,默认会生成在启动 JVM 的目录里。 |
jcmd PID VM.system_properties | 查看 JVM 的属性信息 |
jcmd PID VM.flags | 查看 JVM 的启动参数,注意,可以看到 -X 和 -XX 的参数信息 |
jcmd PID VM.command_line | 查看 JVM 的启动命令行 |
jcmd PID GC.run_finalization | 对 JVM 执行 java.lang.System.runFinalization(),尽量b别去调用这个对象的finalize方法。 |
jcmd PID GC.run | 对 JVM 执行 java.lang.System.gc(),告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的 |
jcmd PID PerfCounter.print | 查看 JVM 的性能 |