首页 > 解决方案 > 当我使用 Epsilon GC 时,我无法使用 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 上。

标签: javagarbage-collectionjfr

解决方案


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

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

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


推荐阅读