使用Jrockit的Java JFR转储的JMC解析器
我知道将JFR解析为Java可以由不受支持的解析器完成,比如使用jrockit的JMC解析器。我还认为在飞行记录过程中会有很多事件被捕获 如果我想从各种事件中检索数据值,如事件选项卡下的堆栈跟踪、代码选项卡下的热方法、代码选项卡下的调用树等。我如何过滤 例如,我能够使用jfr flame图中提到的以下代码过滤调用树使用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
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,我能够从您的技巧中检索这些字段的数据并调试代码。