问题描述
我正在尝试通过传递以下参数来使用 jshell 运行 JDK 飞行 (OpenJDK 11) 记录器。 jshell -J-XX:StartFlightRecording:filename=myrecording.jfr,duration=240s
除了消耗事件之外,一切似乎都有效。
开始录制 1. 结果将写入:
/mypath/myrecording.jfr
|欢迎使用 JShell -- 版本 11.0.10
|对于介绍类型:/help intro
jshell> 导入 jdk.jfr.*;
...> 导入 java.nio.file.*;
...> 导入 jdk.jfr.consumer.*;
...> @Label("Hello Foojay")
...> @Description("Foojay 是 OpenJDK 朋友的聚集地")
...> class SimpleEvent 扩展 Event {
...> @Label("Message")
...> 字符串消息;
...> }
...> SimpleEvent 事件 = new SimpleEvent();
...> event.begin();
...> Thread.sleep(60);
...> event.message = "hello,foojay!";
...> event.commit();
...> 路径 p = Paths.get("/mypath/myrecording.jfr");
...> for (RecordedEvent e : RecordingFile.readAllEvents(p)) {
...> System.out.println(e.getStartTime() + " : " + e.getValue("message"));
...> }
|创建类 SimpleEvent
事件 ==> SimpleEvent@37883b97
$8 ==>“你好,富杰!”
p ==> /mypath/myrecording.jfr
|异常 java.io.IOException: 不是有效的飞行记录器文件。文件长度仅为 0 字节。
|在录音输入。 (RecordingInput.java:82)
|在录音输入。 (RecordingInput.java:87)
|在录音文件。 (RecordingFile.java:107)
|在 RecordingFile.readAllEvents (RecordingFile.java:240)
|在 (#11:1)
我超出了 IOException 并且由于某种原因无法读取 .jfr 文件。但是 jfr 打印有效,但 API 无效。我在这做傻事吗?
jfr 打印 myrecording.jfr
jdk.ActiveSetting {
开始时间 = 10:45:30.746
id = 1598
name = "阈值"
值 = "0 ns"
eventThread = "main" (javaThreadId = 1)
}
jdk.ActiveSetting {
开始时间 = 10:45:30.746
id = 1598
name = "stackTrace"
值 = "假"
eventThread = "main" (javaThreadId = 1)
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)