当我使用 Epsilon GC 时,我无法使用 Flight Recorder

When I use Epsilon GC, I cannot use Flight Recorder

我是运行这个命令

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.

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

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

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

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