4.2. 使用诊断命令(JCMD)配置 JDK Flight Recorder

您可以使用 Java 诊断命令配置 JDK Flight Recorder(JFR)。执行诊断命令的最简单方法是使用位于 Java 安装目录中的 jcmd 工具。要使用命令,您必须将 JVM 的进程标识符或主类名称传递到 jcmd,并将实际命令参数传递给 jcmd。您可以通过运行不带参数的 jcmd 来获取 JVM 或主类的名称,也可以使用 jpsjps(Java Process Status)工具列出了它具有访问权限的目标系统上的 JVM。

要查看所有正在运行的 Java 进程的列表,请使用不带任何参数的 jcmd 命令。要查看可供正在运行的 Java 应用程序使用的命令的完整列表,请在进程标识符或主类名称后将 help 指定为诊断命令。

对 JFR 使用以下诊断命令:

4.2.1. 开始 JFR

使用 JFR.start 诊断命令启动动态记录。例如:

jcmd <PID> JFR.start delay=10s duration=10m filename=recording.jfr

表 4.1. 下表列出了您可以在此命令中使用的参数:

参数描述数据类型默认值

name

记录的名称

字符串

-

设置

服务器端模板

字符串

-

duration

记录持续时间

Time

0s

filename

生成记录文件名

字符串

-

maxAge

缓冲数据的最大期限

Time

0s

maxsize

最大缓冲区大小(以字节为单位)

Long

0

dumponexit

JVM 关闭时转储运行记录

布尔值

-

path-to-gc-roots

收集垃圾回收器根路径

布尔值

False

4.2.2. 停止 JFR

使用 JFR.stop 诊断命令停止运行动态记录。例如:

jcmd <PID> JFR.stop name=output_file

表 4.2. 下表列出了您可以在此命令中使用的参数。

参数描述数据类型默认值

name

记录的名称

字符串

-

filename

将记录数据复制到文件中

字符串

-

4.2.3. Check JFR

使用 JFR.check 命令显示有关正在进行的记录的信息。例如:

jcmd <PID> JFR.check

表 4.3. 下表列出了您可以在此命令中使用的参数。

参数描述数据类型默认值

name

记录的名称

字符串

-

filename

将记录数据复制到文件中

字符串

-

maxAge

转储文件的最长持续时间

Time

0s

maxsize

要转储的最大字节数

Long

0

begin

起始时间转储数据

字符串

-

end

结束时间转储数据

字符串

-

path-to-gc-roots

收集垃圾回收器根路径

布尔值

false

4.2.4. 转储 JFR

使用 JFR.dump 诊断命令将动态记录的内容复制到文件中。例如:

jcmd <PID> JFR.dump name=output_file filename=output.jfr

表 4.4. 下表列出了您可以在此命令中使用的参数。

参数描述数据类型默认值

name

记录的名称

字符串

-

filename

将记录数据复制到文件中

字符串

-

maxAge

转储文件的最长持续时间

Time

0s

maxsize

要转储的最大字节数

Long

0

begin

起始时间转储数据

字符串

-

end

结束时间转储数据

字符串

-

path-to-gc-roots

收集垃圾回收器根路径

布尔值

false

4.2.5. 配置 JFR

使用 JFR.configure 诊断命令配置动态记录。例如:

jcmd <PID> JFR.configure repositorypath=/home/jfr/recordings

表 4.5. 下表列出了您可以在此命令中使用的参数。

参数描述数据类型默认值

repositorypath

仓库的路径

字符串

-

dumppath

转储的路径

字符串

-

堆栈深度

堆栈深度

Jlong

64

globalbuffercount

全局缓冲区的数量

Jlong

32

globalbuffersize

全局缓冲的大小

Jlong

524288

thread_buffer_size

线程缓冲的大小

Jlong

8192

memorysize

总体内存大小

Jlong

16777216

maxchunksize

独立磁盘块的大小

Jlong

12582912

Samplethreads

激活线程抽样

布尔值

true

更新于 2023-05-11