软件指南针:专注于软件传播与分享

JDK工具jcmd用法详解

来源:原创 1448次浏览 0条评论
☞ 本文主要介绍软件Java的相关内容:JDK工具jcmd用法详解

   其下列版本/分支可以参考本文:

  • 全部版本/分支

jcmd,用于向正在运行的JVM发送诊断信息请求。

jcmd的命令行用法有如下几种:

jcmd [ options ]

jcmd [ pid | main-class ] PerfCounter.print

jcmd [ pid | main-class ] command [ arguments ]

jcmd [ pid | main-class ] -f file
options

命令行选项。请参考选项部分。

pid

接收诊断命令请求的进程ID。该进程必须是一个Java进程。你可以使用jps或jcmd来获取运行于当前计算机上的Java进程列表。

main-class

接收诊断命令请求的进程的main类。匹配进程时,main类名称中包含指定子字符串的任何进程均是匹配的。如果多个正在运行的Java进程共享同一个main类,诊断命令请求将会发送到所有的这些进程中。

command [arguments]

接收诊断命令请求的进程的main类。匹配进程时,main类名称中包含指定子字符串的任何进程均是匹配的。如果多个正在运行的Java进程共享同一个main类,诊断命令请求将会发送到所有的这些进程中。

注意: 如果任何参数含有空格,你必须使用英文的单引号或双引号将其包围起来。 此外,你必须使用转义字符来转移参数中的单引号或双引号,以阻止操作系统shell处理这些引用标记。当然,你也可以在参数两侧加上单引号,然后在参数内使用双引号(或者,在参数两侧加上双引号,在参数中使用单引号)。

举个例子,假设你想要发送一个诊断命令请求到com.example.MyClass name="Value of name argument"。下列3中命令是有效的:

jcmd com.example.MyClass name=\"Value of name argument\"
jcmd com.example.MyClass name="'Value of name argument'"
jcmd com.example.MyClass name='"Value of name argument"'
下列两种命令是无效的:
jcmd com.example.MyClass name=Value\\ of\\ name\\ argument
jcmd com.example.MyClass name="Value\ of\ name\ argument"
Perfcounter.print

打印目标Java进程上可用的性能计数器。性能计数器的列表可能会随着Java进程的不同而产生变化。

-f file

从文件file中读取命令,然后在目标Java进程上调用这些命令。在file中,每个命令必须写在单独的一行。以"#"开头的行会被忽略。当所有行的命令被调用完毕后,或者读取到含有stop关键字的命令,将会终止对file的处理。

描述

jcmd 是一个向支持该功能的JVM发送诊断命令请求的工具。

使用不带参数或参数-l,jcmd 将打印运行的Java进程的列表信息,其中包括进程ID、main类和它们的命令行参数。

如果在命令行中指定进程ID,jcmd 将向该进程ID的Java进程发送至诊断命令请求。

如果在命令行中指定main类,jcmd 将向main类包含该子字符串的所有Java进程发送诊断命令请求。

如果使用PerfCounter.print 参数,jcmd 打印目标Java进程上可用的性能计数器。

如果使用-f 选项参数,jcmd 将向目标Java进程发送file中存储的诊断命令。

选项参数

jcmd的选项参数是互斥的(不能同时使用)。你可以直接使用如下命令名称。

-l

打印正在运行的Java进程的列表信息,包括进程ID、main类以及它们的命令行参数。

-h

打印帮助信息。

-help

打印帮助信息。

另请参阅

作者:软件指南针(http://www.softown.cn),转载请保留出处!

用户评论

使用指南 故障排除 0 返回顶部