JFR 不转储文件内容

问题描述 投票:0回答:1

我正在尝试让我的进程在启用 JFR 的情况下运行。最近,当进程结束时,内容不会转储到 JFR 文件中,因此它只是空的。如果我运行该进程大约 3 分钟然后停止,该文件就会被写入。但我需要它运行更长时间。我将文件的最大大小设置为4G,并在主机上清理了一堆空间。有什么原因导致 JFR 文件只是有时而不是每次都被写入?

我尝试过增加最大大小,增加分配给进程的堆,清除磁盘上的空间

java memory memory-management heap jfr
1个回答
0
投票

如果从

-XX:StartFlightRecording:filename=dump.jfr
开始,如果进程正常退出,则应始终写入转储文件。

如果进程被终止/崩溃,Java 中的关闭钩子将无法运行,并且无法生成正常的 dump.jfr 文件。然而,如果 JVM 崩溃,就会发生一种称为紧急转储的情况。这是尽最大努力,因此如果崩溃非常严重且无法收集数据,则可能会失败。

无论您为 -XX:StartFlightRecording 指定什么,紧急转储的文件名都是“hs_err_pid”+ pid +“.jfr”。这将来可能会改变,但 JDK 23 或更早版本就是这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.