JFR Scrub - Java 一口

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

编码愉快!