gpt4 book ai didi

java - 如何分析 Java Mission Control 中的异常?

转载 作者:行者123 更新时间:2023-11-30 06:43:08 26 4
gpt4 key购买 nike

在启用所有异常跟踪的情况下执行“飞行记录”时,我发现 JMC 存在令人不快的行为。

录制到面板后:

  • 代码 -> 异常
  • 事件 -> 直方图 -> “事件类型”为“Java 应用程序/Java 异常”,“分组依据”为“类”

列出了并非所有抛出的异常,而是所有创建的异常(作为对象)。

有一种方式(或插件)可以在分析过程中生成抛出异常的列表吗?

问候

最佳答案

Java Flight Recorder (JFR) 只能在创建异常时进行记录。 future 的版本可能能够记录何时抛出异常,或按类类型进行过滤。

下面的代码片段展示了 JDK 11 中的工作原理。Oracle JDK 7、8、9 和 10 的工作原理类似,但事件的名称不同。

try (Recording r = new Recording()) {
r.enable("jdk.JavaExceptionThrow");
r.start();
new IOException();
r.stop();
dumpAndPrint(r, "Events for exception deriving from java.lang.Throwable");
}

try (Recording r = new Recording()) {
r.enable("jdk.JavaErrorThrow");
r.start();
new InternalError();
r.stop();
dumpAndPrint(r, "Events for exception deriving from java.lang.Error");
}
}

void dumpAndPrint(Recording r, String title) throws IOException {
System.out.println(title);
Path p = Files.createTempFile("test", ".jfr");
r.dump(p);
for (RecordedEvent e : RecordingFile.readAllEvents(p)) {
System.out.println(e);
}
System.out.println();
}

有两种事件类型

1) jdk.JavaErrorThrow 将为所有源自 java.lang.Error 的创建异常发出该异常

2) jdk.JavaExceptionThrow 将为所有派生自 java.lang.Throwable 的创建异常发出。

为了保持较低的开销,默认情况下仅启用错误事件 (jdk.JavaErrorThrow),例如,如果您使用 -XX:StartFlightRecording MyProgram 启动应用程序

如果您在 JMC 中选择“全部”,则会禁用“jdk.JavaErrorThrow”事件(以避免重复计数)并启用“jdk.JavaExceptionThrow”事件。

关于java - 如何分析 Java Mission Control 中的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com