jshell 飞行记录器异常 - 不是有效的飞行记录器文件

问题描述

我正在尝试通过传递以下参数来使用 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 (将#修改为@)