系列中的上一篇
当前教程
JFR 命令行工具
这是本系列的最后一篇!

系列中的上一篇: 配置 JDK Flight Recorder

JFR 命令行工具

 

介绍 Jfr

jfr - 解析和打印 Flight Recorder 文件

 

概要

要将飞行记录的内容打印到标准输出

jfr print [选项] 文件

要打印有关飞行记录事件的元数据信息

jfr metadata 文件

要将块文件组装成飞行记录文件

jfr assemble 存储库 文件

要将飞行记录文件拆解成块文件

jfr disassmble [选项] 文件

要查看飞行记录文件的摘要统计信息

jfr summary 文件

选项

可选:指定以空格分隔的命令行选项。有关可用选项的说明,请参阅各个子组件部分。

文件

指定目标飞行记录文件 (.jfr) 的名称。

存储库

指定要组装成飞行记录的块文件的位置。

 

描述

jfr 命令提供了一个与飞行记录器文件 (.jfr) 交互的工具。其主要功能是将飞行记录文件过滤、汇总并输出为人类可读的格式。它还支持合并和拆分记录文件。

飞行记录文件以二进制格式创建并保存。拥有一个可以从飞行记录中提取内容、操作内容并将其转换为人类可读格式的工具,有助于开发人员调试 Java 应用程序的性能问题。

 

子命令

jfr 命令有几个子命令

  • print
  • summary
  • assemble
  • disassemble
  • metadata

jfr print 子命令

使用 jfr print 将飞行记录文件的内容打印到标准输出。语法为

jfr print [--xml|--json] [--categories <filters>] [--events <filters>] [--stack-depth <depth>] <file>

其中

--xml

以 XML 格式打印记录

--json

以 JSON 格式打印记录

--categories 过滤器

选择与类别名称匹配的事件。过滤器是一个逗号分隔的名称列表,包括简单名称和/或限定名称,以及/或引用的 glob 模式

--events 过滤器

选择与事件名称匹配的事件。过滤器是一个逗号分隔的名称列表,包括简单名称和/或限定名称,以及/或引用的 glob 模式

--stack-depth 深度

堆栈跟踪中的帧数,默认值为 5

文件

记录文件 (.jfr) 的位置

除非指定了 xmljson,否则打印飞行记录文件内容的默认格式为人类可读形式。这些选项提供机器可读的输出,可以由用户创建的脚本进一步解析或处理。

使用 jfr --help print 查看过滤器的示例用法。

为了减少显示的数据量,可以过滤掉事件或事件类别。过滤器对事件的符号名称(使用 @Name 注释设置)或类别名称(使用 @Category 注释设置)进行操作。如果使用多个过滤器,则将包括来自两个过滤器的事件。如果未使用过滤器,则将打印所有事件。如果使用类别过滤器和事件过滤器的组合,则选定的事件将是两个过滤器的并集。

例如,要显示所有 GC 事件和 CPULoad 事件,可以使用以下命令

jfr print --categories GC --events CPULoad recording.jfr

事件值根据正在使用的内容类型进行格式化。例如,具有 jdk.jfr.Percentage 注释且值为 0.52 的字段将格式化为 52%。

堆栈跟踪默认情况下截断为 5 个帧,但可以使用 --stack-depth 命令行选项增加/减少该数字。

jfr summary 子命令

使用 jfr summary 打印记录的统计信息。例如,摘要可以说明记录的事件数量以及它们使用了多少磁盘空间。这对于故障排除和了解事件设置的影响很有用。

语法为

jfr summary file

其中:文件

飞行记录文件 (.jfr) 的位置

jfr metadata 子命令

使用 jfr metadata 查看有关事件的信息,例如事件名称、类别和飞行记录文件中的字段布局。语法为

jfr metadata file

其中

文件

飞行记录文件 (.jfr) 的位置

assemble 子命令

使用 jfr assemble 将块文件组装成记录文件。

语法为

jfr assemble repository file

其中

存储库

包含块文件的存储库所在的目录

文件

飞行记录文件 (.jfr) 的位置

飞行记录信息以块的形式写入。块包含解析所需的所有信息。块通常包含对故障排除有用的事件。如果 JVM 崩溃,可以恢复这些块,并使用此 jfr assemble 命令创建飞行记录文件。这些块文件按时间顺序连接起来,未完成的块文件 (.part) 将被排除在外。

jfr disassemble 子命令

使用 jfr disassemble 将飞行记录文件分解成其块文件片段。语法为

jfr disassemble [--max-chunks <块数>] [--output <目录>] <文件>

其中

--output 目录

写入拆解文件的目录,默认情况下为当前目录

--max-chunks 块数

每个文件的最大块数,默认值为 5。块大小各不相同,但通常约为 15 MB。

--max-size 大小

每个文件的最大字节数。

文件

飞行记录文件 (.jfr) 的位置

此功能可用于通过删除有故障的块来修复损坏的文件。它还可以用于减小文件大小,使其小到足以传输。生成的块文件命名为 myfile_1.jfrmyfile_2.jfr 等。如果需要,生成的文件名将用零填充以保持时间顺序。例如,如果记录包含超过 100 个块,则块文件名将为 myfile_001.jfr

 

版本和帮助子命令

使用 jfr --versionjfr version 查看此 jfr 命令的版本字符串信息。

要获取有关任何 jfr 子命令的帮助,请使用

jfr <--help|help> [subcommand]

其中

[子命令] 是以下任何一个

  • print
  • metadata
  • summary
  • assemble
  • disassemble

上次更新: 2021 年 9 月 14 日


系列中的上一篇
当前教程
JFR 命令行工具
这是本系列的最后一篇!

系列中的上一篇: 配置 JDK Flight Recorder