jvm command

用于将诊断命令请求发送到正在运行的java虚拟机,从jdk7开始提供。是一个功能全面的工具,可用于获取目标java进程的性能统计,jfr,内存使用,垃圾收集,线程堆栈,jvm运行时间。

C:\Users\user>jcmd -h
Usage: jcmd <pid | main class> <command ...|PerfCounter.print|-f file>
or: jcmd -l
or: jcmd -h

command must be a valid jcmd command for the selected jvm.
Use the command "help" to see which commands are available.
If the pid is 0, commands will be sent to all Java processes.
The main class argument will be used to match (either partially
or fully) the class used to start Java.
If no options are given, lists Java processes (same as -p).

PerfCounter.print display the counters exposed by this process
-f read and execute commands from the file
-l list JVM processes on the local machine
-h this help

pid:接受诊断命令请求的进程ID。
main class:接受诊断命令请求的进程main类。jcmd会将诊断命令请求发送给指定main class的所有java进程。
command:command必须是一个有效的jcmd命令,可以使用jcmd pid help命令查看可用的命令列表。如果pid是0,那么command将会被发送给所有java进程。main class会用来去匹配(局部匹配或全量匹配)。如果未指定任何选项,他将会列出正在运行的java进程标识符以及用于启动该进程的main class和命令参数(相当于使用了-l参数)
PerfCounter.print:打印指定Java进程上可用的性能计数器。
-f filename:从指定文件中读取命令并执行。在file中,每个命令必须写在单独的一行。以“#”开头的行会被忽略。当所有行的命令被调用完毕后,或者读取到含有stop关键字的命令,将会终止对file的处理。
-l:查看所有jvm进程。jcmd不使用参数与jcmd -l效果相同。

常用场景(pid均可换为主类全路径)

查看性能计数器

jcmd pid PerfCounter.print

查看jvm已启动时长

jcmd pid VM.uptime

查看系统中类统计信息,如类实例数量和占据空间大小。同jmap -histo pid。

jcmd pid GC.class_histogram

查看线程堆栈信息,同jstack -l。

jcmd pid Thread.print

查看jvm的heap dump,导出dump快照文件。

jcmd pid GC.heap_dump d:\a.hprof
# 可使用java visualvm装入分析快照。

查看jvm属性信息

jcmd pid VM.system_properties

查看jvm启动参数

jcmd pid VM.flags

查看jvm启动命令行

jcmd pid VM.command_line

对 JVM 执行 java.lang.System.runFinalization()。执行一次 finalization 操作,相当于执行java.lang.System.runFinalization()。调用已经失去引用的对象的finalize方法,但是JVM可以选择执行或者不执行。

jcmd pid GC.run

对jvm执行java.lang.System.gc()。同GC.run_finalization告诉垃圾收集器进行垃圾收集,但是jvm可选择执行或不执行。

jcmd pid GC.run

查看jvm版本信息

jcmd pid VM.version

查看目标jvm进程的native memory tracking (NMT)信息,用于追踪JVM的内部内存使用。

jcmd pid VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]
# summary: 分类内存使用情况.
# detail: 详细内存使用情况,除了summary信息之外还包含了虚拟内存使用情况。
# baseline: 创建内存使用快照,方便和后面做对比
# summary.diff: 和上一次baseline的summary对比
# detail.diff: 和上一次baseline的detail对比
# shutdown: 关闭NMT
posted on 2023-05-17 21:48  xing54321  阅读(304)  评论(0)    收藏  举报