java - 当我使用 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 上。
解决方案
我无法在 Oracle JDK 14.02 (Windows) 上重现。
在转储记录之前,该文件的大小为零,这发生在 JVM 退出(通常)时,因此您需要等待。
如果应用程序因 OutOfMemoryError 而结束,则无法保证录制,如果发生,则可能是紧急录制(可能缺少信息),并且使用前缀 hs_oom_pid 创建。
推荐阅读
- c++ - fstream 删除特定的开始到结束行
- excel - Excel VBA 变量图表范围
- javascript - 无法呈现值数组(React 组件)
- c# - 为什么 ref 结构不能用作类型参数?
- c# - 如何使两个任务在 CPU 时间分布均匀的情况下运行
- c++ - 在分配中使用 initializer_list 是最佳实践吗
- mysql - 如何在一个 SQL 语句中使用 Substring 和 Replace?
- c# - NumericUpDown:修复 MouseEnter 和 MouseLeave 事件
- javascript - 我不太了解有关传递参数的 javascript 语法
- c# - 从 IMAP 获取邮件时获取加密字符串