The jfr Command

名称

jfr - 打印和操作飞行记录文件

概要

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

jfr print [选项] 文件

要在标准输出上显示聚合的事件数据:

jfr view [选项] 文件

要配置一个 .jfc 设置文件:

jfr configure [选项]

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

jfr metadata [文件]

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

jfr summary 文件

要从飞行记录文件中删除事件:

jfr scrub [选项] 文件

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

jfr assemble 存储库 文件

要将飞行记录文件拆分为块文件:

jfr disassmble [选项] 文件

选项
可选:指定由空格分隔的命令行选项。请参阅各个子组件部分,了解可用选项的描述。
文件
指定目标飞行记录文件的名称(.jfr)。
存储库
指定要组装成飞行记录的块文件的位置。

描述

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

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

子命令

jfr 命令有几个子命令:

jfr print 子命令

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

语法为:

jfr print [--xml|--json] [--categories <过滤器>] [--events <过滤器>] [--stack-depth <深度>] <文件>

其中:

--xml
以 XML 格式打印记录。
--json
以 JSON 格式打印记录。
--categories <过滤器>
选择匹配类别名称的事件。过滤器是一个逗号分隔的名称列表,简单和/或限定,和/或带引号的通配符模式。
--events <过滤器>
选择匹配事件名称的事件。过滤器是一个逗号分隔的名称列表,简单和/或限定,和/或带引号的通配符模式。
--stack-depth <深度>
堆栈跟踪中的帧数,默认为 5。
<文件>
记录文件的位置(.jfr
xmljson,否则打印飞行记录文件内容的默认格式为人类可读形式。这些选项提供了可由用户创建的脚本进一步解析或处理的机器可读输出。

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

@Name 注解设置,或类别名称,通过使用 @Category 注解设置。如果使用多个过滤器,将包括来自两个过滤器的事件。如果不使用过滤器,将打印所有事件。如果同时使用类别过滤器和事件过滤器的组合,则所选事件将是两个过滤器的并集。

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

jdk.jfr.Percentage 注解的字段将格式化为 52%。

--stack-depth 命令行选项增加/减少数量。

jfr view 子命令

jfr view 聚合并在标准输出上显示事件数据。

jfr view [--verbose] [--width <整数>] [--truncate <模式>] [--cell-height <整数>] <视图> <文件>

--verbose
显示构成视图的查询。
--width <整数>
视图的宽度(以字符为单位)。默认值取决于视图。
--truncate <模式>
如何截断超出表格单元格空间的内容。模式可以是 'beginning' 或 'end'。默认值为 'end'。
--cell-height <整数>
表格单元格中的最大行数。默认值取决于视图。
<视图>
要显示的视图或事件类型的名称。使用 jfr view types <文件> 查看列表。要显示所有视图,请使用 jfr view all-views <文件>。要显示所有事件,请使用 jfr view all-events <文件>
<文件>
记录文件的位置(.jfr)

视图 参数可以是事件类型名称。使用 jfr view types <文件> 查看列表。要显示所有视图,请使用 jfr view all-views <文件>。要显示所有事件,请使用 jfr view all-events <文件>

jfr configure 子命令

jfr configure 配置 .jfc 设置文件。

jfr configure [--interactive] [--verbose] [--input <文件> ] [--output <文件> ] [选项=值]* [事件设置=值]*

--interactive
交互模式,其中配置由一组问题确定。
--verbose
显示修改后的设置。
--input <文件>
一个以逗号分隔的 .jfc 文件列表,新配置基于这些文件。如果未指定文件,则使用 JDK 中的默认文件(default.jfc)。如果指定为 'none',则新配置将为空。
--output <文件>
生成的输出文件的文件名。如果未指定,将使用文件名 custom.jfc。
选项=值
要修改的选项值。要查看可用选项,请使用 jfr help configure
事件设置=值
要修改的事件设置值。使用形式:<事件名称>#<设置名称>=<> 要添加新事件设置,请使用 '+' 前缀事件名称。

jfr metadata 子命令

jfr metadata 显示有关事件的信息,例如事件名称、类别和飞行记录文件中的字段布局。

jfr metadata [--categories <过滤器> ] [--events <过滤器> ] [ <文件> ]

--categories <过滤器>
选择匹配类别名称的事件。过滤器是一个逗号分隔的名称列表,简单和/或限定,和/或带引号的通配符模式。
--events <过滤器>
选择匹配事件名称的事件。过滤器是一个逗号分隔的名称列表,简单和/或限定,和/或带引号的通配符模式。
<文件>
记录文件的位置(.jfr)
<文件> 参数,则将使用 'jfr' 工具所在的 JDK 中的元数据。

jfr summary 子命令

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

jfr summary <文件>

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

jfr scrub 子命令

jfr scrub 从文件中删除敏感内容或减小其大小。

jfr scrub [--include-events <过滤器>] [--exclude-events <过滤器>] [--include-categories <过滤器>] [--exclude-categories <过滤器>] [--include-threads <过滤器>] [--exclude-threads <过滤器>] <输入文件> [<输出文件>]

--include-events <过滤器>
选择匹配事件名称的事件。
--exclude-events <过滤器>
排除匹配事件名称的事件。
--include-categories <过滤器>
选择匹配类别名称的事件。
--exclude-categories <过滤器>
排除匹配类别名称的事件。
--include-threads <过滤器>
选择匹配线程名称的事件。
--exclude-threads <过滤器>
排除匹配线程名称的事件。
<输入文件>
从中读取事件的输入文件。
<输出文件>
用于写入过滤事件的输出文件。如果未指定文件,则将写入与输入文件相同的路径,但文件名末尾会附加“-scrubbed”。

过滤器是一个逗号分隔的名称列表,可以是简单的、限定的,也可以是带引号的通配符模式。如果使用多个过滤器,则按指定顺序应用它们。

jfr assemble 子命令

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

语法为:

jfr assemble <存储库> <文件>

其中:

<存储库>
包含块文件的存储库所在的目录。
<文件>
飞行记录文件(.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 version 和 help 子命令

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

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

jfr <--help|help> [子命令]

其中:

[子命令] 可以是以下之一:

  • print
  • view
  • configure
  • metadata
  • summary
  • scrub
  • assemble
  • disassemble