如果我有多个 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。
例如
- 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
从 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
}
我收到了一堆多个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
从 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
}