Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jrockit的Java JFR转储的JMC解析器_Java_Jrockit_Jmc_Java Mission Control_Jfr - Fatal编程技术网

使用Jrockit的Java JFR转储的JMC解析器

使用Jrockit的Java JFR转储的JMC解析器,java,jrockit,jmc,java-mission-control,jfr,Java,Jrockit,Jmc,Java Mission Control,Jfr,我知道将JFR解析为Java可以由不受支持的解析器完成,比如使用jrockit的JMC解析器。我还认为在飞行记录过程中会有很多事件被捕获 如果我想从各种事件中检索数据值,如事件选项卡下的堆栈跟踪、代码选项卡下的热方法、代码选项卡下的调用树等。我如何过滤 例如,我能够使用jfr flame图中提到的以下代码过滤调用树 final String EVENT_TYPE = "Method Profiling Sample"; IView view = recording.createView(); f

我知道将JFR解析为Java可以由不受支持的解析器完成,比如使用jrockit的JMC解析器。我还认为在飞行记录过程中会有很多事件被捕获

如果我想从各种事件中检索数据值,如事件选项卡下的堆栈跟踪、代码选项卡下的热方法、代码选项卡下的调用树等。我如何过滤

例如,我能够使用jfr flame图中提到的以下代码过滤调用树

final String EVENT_TYPE = "Method Profiling Sample";
IView view = recording.createView();
for(IEvent event : view){
if(EVENT_TYPE.equals(event.getEventType().getName())){
  FLRStackTrace flrStackTrace = (FLRStackTrace) event.getValue("(stackTrace)");
这里,, 事件类型-方法分析示例;标识符-(堆栈跟踪)


因此,如果我想检索stacktrace/hot方法等,我需要捕获哪些事件/标识符?有这方面的文件吗

这方面没有任何文档。如果要提取stacktraces,jfr flame图就是一个很好的示例。 事件/堆栈跟踪和代码/热方法之间的区别在于,热方法选项卡仅使用方法分析示例事件,事件选项卡更通用,并将显示您在事件类型视图中选择的事件类型。代码/调用树与热方法相同,但“颠倒”


要查看可用的其他事件,可以使用JMC UI。其中有一个称为设计器视图的功能(单击窗口/显示视图/设计器)。如果您打开了录制,可以使用红色的停止按钮进入感兴趣选项卡的设计模式,然后右键单击感兴趣的组件以查看它使用的事件类型和属性。

JDK 9具有受支持的解析器API

Path p = Paths.get("recording.jfr");
for (RecordedEvent event: RecordingFile.readAllEvents(p)) {
  System.out.println(event);
}
有关更完整的示例,请参见Javadoc

没有相关文档。感谢Klara,我能够从您的技巧中检索这些字段的数据并调试代码。