向运行中额JVM发送命令请求诊断信息。
概要
jcmd [-l|-h|-help]
jcmd pid|main-class PerfCounter.print
jcmd pid|main-class -f filename
jcmd pid|main-class command[ arguments]
描述
jcmd工具用于向JVM发送诊断请求。必须在本地JVM上使用,且要有与运行JVM同样的用户和组别。
注意:
如需远程调用或不同身份调用,参考com.sun.management.DiagnosticCommandMBean接口。DiagnosticCommandMBeanAPI文档
若不带参或使用-l运行jcmd*,则会打印运行中java进程id和启动时的main class。使用-h或-help*打印帮助信息。
1 2 3
| % jcmd 11810 com.lyyljs.demo.Application 9330 19332 sun.tools.jcmd.JCmd
|
如果第一个参数指定了pid或main class,jcmd会发送请求到指定进程(pid或所有main class名称相同的进程)。也可以使用0指代所有可达Java进程。可选命令选项如下:
-l
打印运行中java进程id和启动时的main class
Perfcounter.print
打印目标进程的性能计数器。
-f filename
储存有执行命令的文件。每行一个命令。以#开头的行会被忽略。所有行读取结束或含有stop关键字的行时停止执行。
command [arguments]
可选执行命令。使用help命令查看该进程可选诊断命令。在命令后面使用help*参数可查看该命令帮助信息。如果参数包含空格需要用‘或“包起来。当需要这两个符号当字符解析时使用转义符*。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| % jcmd 0 help 11810: #pid The following commands are available: JFR.stop #停止JFR JFR.start #JFR开始 JFR.dump #dump JFR信息 JFR.check #检查JFR状态 VM.native_memory #打印跟踪本地内存 需要指定-XX:NativeMemoryTracking不为off VM.check_commercial_features #检查商业特性是否解锁 VM.unlock_commercial_features #解锁商业特性 ManagementAgent.stop #停止JMX Agent ManagementAgent.start_local #开启本地JMX Agent ManagementAgent.start #开启JMX Agent GC.rotate_log #GC日志转储 Thread.print #打印线程栈信息信息,等于jstack <PID> GC.class_stats #转储Java类元数据的详细统计,需要打开-XX:+UnlockDiagnosticVMOptions GC.class_histogram #打印堆直方图,等于jmap -histo <PID> GC.heap_dump #打印堆dump信息,等于jmap -dump:format=b,file=filename <PID> GC.run_finalization #强制调用已经失去引用的对象的finalize方法,等与System.runFinalization() GC.run #告诉垃圾收集器打算进行垃圾收集,等与System.gc(); VM.uptime #打印VM启动至今的时间,单位秒 VM.flags #打印虚拟机运行参数(flags),同jinfo -flags <PID>, jinfo -flag <VM FLAG> <PID> VM.system_properties #打印环境变量 同jinfo -sysprops <PID> VM.command_line #打印虚拟机参数(args,command,initial class path,Launcher Type),同jinfo -sysprops <PID> | grep command VM.version #打印虚拟机版本信息,同jinfo -sysprops <PID> | grep version help #打印帮助信息
|
引用
Oracle jcmd文档