如果我有多个Java Flight Recorder文件(.JFR),如何将它们合并在一起以便在Java Mission Control中同时查看?

3
我收到了许多 JFR 文件(大约 170 个),逐个打开太慢了,我能否将它们放在一个单一文件中?请注意,我只有这些文件,无法配置 JVM 并重新获取 JFR。
例如:
  • 2020_03_30_20_37_01_2333_0.jfr
  • 2020_03_30_21_37_01_2333_0.jfr
  • 2020_03_30_22_37_01_2333_0.jfr
  • 2020_03_30_23_37_01_2333_0.jfr

    . . .

  • N
2个回答

7
您可以在11.06版或更高版本的JDK_HOME/bin目录下使用名为“jfr”的工具。
$ jfr assemble <repository> <file>

仓库(repository)是文件所在的目录,文件(file)是要创建的记录文件(.jfr)的名称。

一个记录文件只是一堆块文件的串联,因此你也可以在shell中完成。例如,在Windows中使用copy /b命令。

 $ copy /b 1.jfr + 2.jfr + 3.jfr combined.jfr 

这只是将结果连接到单个文件或聚合结果吗? - Matécsa Andrea
它只会将结果连接成一个单一的文件。任何聚合都由GUI处理。 - Kire Haglin
谢谢。GUI是什么意思?是否有一种函数可以聚合相同类别(例如)的记录文件? - Matécsa Andrea
2
如果您使用JDK Mission Control,它可以显示聚合统计信息,例如按类或包聚合的方法分析。 - Kire Haglin
在Linux上,您可以使用cat jfr_file_version_* >> combined.jfr - uwevil

0
这是一个Windows PowerShell脚本,用于连接JFR文件。请注意最终连接文件的大小,它可能太大了,如果是这种情况,您可能需要减少要连接的文件。
    $Location = ""
    $outputConcatenatedJFR = "all_2333_1.jfr"
    $items = Get-ChildItem -Path . -Filter *2333_1.jfr | Sort-Object -Property Name
    New-Item $outputConcatenatedJFR -ItemType file
    ForEach ($item in $items) {
       Write-Host "Processing file - " $item
       cmd /c copy /b $outputConcatenatedJFR+$item $outputConcatenatedJFR
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接