JFR Scrub - Java 一口
Billy Korando 于 2022 年 10 月 3 日
JDK 飞行记录器 (JFR) 是用于对 JVM 和 Java 应用程序执行诊断和分析的强大工具。在记录时,JFR 可能会捕获敏感信息或超出需要的信息。在共享记录文件时,能够删除此类敏感或多余数据会很好。为了满足这一需求,JFR 团队添加了 jfr scrub
实用程序,允许轻松过滤记录文件中的数据。我们来看看。
JFR Scrub 实用程序
JFR scrub 实用程序是 jfr
命令行工具的一项功能,该工具打包为 JDK 的一部分。从终端运行
jfr scrub [filters] [recording-file] [output-file]
以过滤指定记录文件中的数据。请注意,output-file
是一个可选参数。如果没有提供 output-file
,则输出文件将是 recording-file
的名称,末尾附加“-scrubbed”。
过滤数据
有三种方法可以在记录文件中过滤事件;事件名称、类别或线程名称。此外,过滤器可以是包含或排除的。示例包括以下内容
--include-events [criteria]
--exclude-categories [criteria]
--exclude-threads [criteria]
提供条件
过滤器根据提供给它们的条件包含或排除事件。可以向同一过滤器提供多个条件,并且还可以在条件中使用通配符。请注意,条件以 OR 方式应用。
此过滤器仅包含文件读取和写入事件
--include-events jdk.FileRead,jdk.FileWrite
而此过滤器正在删除所有 GC 事件
--exclude-categories GC*
多个过滤器也可以应用于同一文件;它们作为 AND 工作;在下面的示例中,首先仅包含 GC 事件,然后删除所有 GC 暂停事件
--include-categories GC* --exclude-events jdk.GCPhasePause
其他阅读材料
JFR:清理记录数据 - https://bugs.openjdk.org/browse/JDK-8271585
编码愉快!