4.2. 使用诊断命令(JCMD)配置 JDK Flight Recorder
您可以使用 Java 诊断命令配置 JDK Flight Recorder (JFR)。执行诊断命令的最简单方法是使用位于 Java 安装目录中的 jcmd
工具。若要使用命令,您必须传递 JVM 的进程标识符或主类的名称,并将实际命令作为参数传递给 jcmd
。您可以通过运行不带参数的 jcmd
或主类名称来检索 JVM 或主类的名称。jps
(Java Process Status)工具列出了目标系统上其具有访问权限的 JVM。
要查看所有正在运行的 Java 进程的列表,请使用不带任何参数的 jcmd
命令。要查看正在运行的 Java 应用程序可用的命令的完整列表,请在进程标识符或主类的名称后将 help 指定为诊断命令。
对 JFR 使用以下诊断命令:
4.2.1. 启动 JFR 复制链接链接已复制到粘贴板!
使用 JFR.start
诊断命令启动 flight 记录。例如:
jcmd <PID> JFR.start delay=10s duration=10m filename=recording.jfr
jcmd <PID> JFR.start delay=10s duration=10m filename=recording.jfr
参数 | 描述 | 数据类型 | 默认值 |
---|---|---|---|
name | 记录的名称 | 字符串 | - |
设置 | 服务器端模板 | 字符串 | - |
duration | 记录持续时间 | Time | 0s |
filename | 生成记录文件名 | 字符串 | - |
maxAge | 缓冲数据的最长期限 | Time | 0s |
maxsize | 缓冲区的最大大小(以字节为单位) | Long | 0 |
dumponexit | JVM 关闭时运行的转储记录 | 布尔值 | - |
path-to-gc-roots | 收集垃圾收集器 root 的路径 | 布尔值 | False |
4.2.2. 停止 JFR 复制链接链接已复制到粘贴板!
使用 JFR.stop
诊断命令停止运行 flight 记录。例如:
jcmd <PID> JFR.stop name=output_file
jcmd <PID> JFR.stop name=output_file
参数 | 描述 | 数据类型 | 默认值 |
---|---|---|---|
name | 记录的名称 | 字符串 | - |
filename | 将记录数据复制到文件中 | 字符串 | - |
4.2.3. 检查 JFR 复制链接链接已复制到粘贴板!
使用 JFR.check
命令显示正在进行中的记录的信息。例如:
jcmd <PID> JFR.check
jcmd <PID> JFR.check
参数 | 描述 | 数据类型 | 默认值 |
---|---|---|---|
name | 记录的名称 | 字符串 | - |
filename | 将记录数据复制到文件中 | 字符串 | - |
maxAge | 转储文件的最大持续时间 | Time | 0s |
maxsize | 转储的最大字节数 | Long | 0 |
begin | 开始转储数据的时间 | 字符串 | - |
end | 转储数据的结束时间 | 字符串 | - |
path-to-gc-roots | 收集垃圾收集器 root 的路径 | 布尔值 | false |
4.2.4. dump JFR 复制链接链接已复制到粘贴板!
使用 JFR.dump
诊断命令将 flight 记录的内容复制到文件中。例如:
jcmd <PID> JFR.dump name=output_file filename=output.jfr
jcmd <PID> JFR.dump name=output_file filename=output.jfr
参数 | 描述 | 数据类型 | 默认值 |
---|---|---|---|
name | 记录的名称 | 字符串 | - |
filename | 将记录数据复制到文件中 | 字符串 | - |
maxAge | 转储文件的最大持续时间 | Time | 0s |
maxsize | 转储的最大字节数 | Long | 0 |
begin | 开始转储数据的时间 | 字符串 | - |
end | 转储数据的结束时间 | 字符串 | - |
path-to-gc-roots | 收集垃圾收集器 root 的路径 | 布尔值 | false |
4.2.5. 配置 JFR 复制链接链接已复制到粘贴板!
使用 JFR.configure
诊断命令配置 flight 记录。例如:
jcmd <PID> JFR.configure repositorypath=/home/jfr/recordings
jcmd <PID> JFR.configure repositorypath=/home/jfr/recordings
参数 | 描述 | 数据类型 | 默认值 |
---|---|---|---|
repositorypath | 到仓库的路径 | 字符串 | - |
dumppath | 转储的路径 | 字符串 | - |
stackdepth | 堆栈深度 | Jlong | 64 |
globalbuffercount | 全局缓冲区数 | Jlong | 32 |
globalbuffersize | 全局缓冲区的大小 | Jlong | 524288 |
thread_buffer_size | 线程缓冲的大小 | Jlong | 8192 |
memorysize | 总内存大小 | Jlong | 16777216 |
maxchunksize | 单个磁盘块的大小 | Jlong | 12582912 |
Samplethreads | 激活线程抽样 | 布尔值 | true |
更新于 2024-05-11