1

我正在运行这个命令

java -cp "D:\Dev\Books Spaces\Java-11-and-12-New-Features-master\Chapter09" -XX:StartFlightRecording,filename=Epsilon.jfr -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC exploring_further/TestFlightRecorder

代码运行,但 .jfr 文件为 0 字节。

当我删除-XX:+UseEpsilonGC并且 Java 默认为 G1 GC。代码运行,飞行记录器将所有数据转储到文件中,我可以读取它。

为什么当我使用 Epsilon 时文件为空以及如何修复它。

在 JDK 14 Windows 10 上。

4

2 回答 2

0

我无法在 Oracle JDK 14.02 (Windows) 上重现。

在转储记录之前,该文件的大小为零,这发生在 JVM 退出(通常)时,因此您需要等待。

如果应用程序因 OutOfMemoryError 而结束,则无法保证录制,如果发生,则可能是紧急录制(可能缺少信息),并且使用前缀 hs_oom_pid 创建。

于 2020-09-09T10:17:13.340 回答
0

Ctrl+C我通过在代码运行时点击来修复它。.jfr 文件被填充,所以我可以阅读它。如果我等待 OutOfMemoryError 文件仍然是 0 字节。

于 2020-10-27T19:47:31.077 回答