如何从 Java Flight Recorder 获取最后的记录?

How can I get the last recordings from Java Flight Recorder?

我正在使用以下命令启动 Java 飞行记录器。

jcmd $PID JFR.start duration=2h filename=my_record.jfr dumponexit=true settings=profile

正在录制开始后的前 2 个小时。

例如,如果它从 1:00 开始,它记录从 1:00 到 3:00,即使我在 9:00 转储。

我需要获取最近 2 小时的录音,而不是前两个小时的录音。

例如,如果它在 1:00 开始并在 9:00 转储,我需要获取从 7:00 到 9:00 的录音。

我该怎么办?

您可以使用参数 maxagemaxsize 控制将数据保留多远,以时间或字节为单位。例如,

jcmd <pid> JFR.start maxage=2h filename=my_recording.jfr dumponexit=true settings=profile

或从命令行

java -XX:+UnlockCommercialFeatures 
-XX:StartFlightRecording=maxage=2h,filename=my_recording.jfr,
dumponexit=true,settings=profile …

我认为 dumponexit 参数只有在你有 JDK 8u40 或更高版本时才适用于 jcmd