如果我有多个 Java 飞行记录器文件 (.JFR),我如何将它们合并在一起以便一次性在 Java 任务控制中看到它们

if I have multiple Java flight recorder files (.JFR) , how do I merge them together to see them at Java mission control in one time

我收到了一堆多个JFR文件进行分析,比如170个,一个一个打开太费时了,我能不能把它们放在一个文件里,从我只有这些文件开始而且我无法配置 JVM 并再次获取 JFR。 例如

从 11.06 或更高版本开始,您可以使用 JDK_HOME/bin 中的 'jfr' 工具。

$ jfr assemble <repository> <file>

其中 repository 是文件所在的目录,file 是要创建的录制文件 (.jfr) 的名称.

录制文件只是块文件的串联,因此您也可以在 shell 中进行录制。例如,在 Windows

中使用复制 /b 命令
 $ copy /b 1.jfr + 2.jfr + 3.jfr combined.jfr 

这是 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
    }