首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Oracle或JDK7或JDK8编程解析JFR文件?

如何用Oracle或JDK7或JDK8编程解析JFR文件?
EN

Stack Overflow用户
提问于 2021-03-09 22:43:37
回答 3查看 413关注 0票数 1

Oracle JDK14和JDK15的API是在https://docs.oracle.com/en/java/javase/14/jfapi/parsing-recording-file.html上发布的,但我找不到类似的OracleJDK8文档。

我想知道是否有人能够打印出用JDK8收集的JFR文件的事件列表,就像JDK14和JDK15文档显示的例子一样。在这种情况下,\jre\lib\jfr.jar文件的作用是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-21 20:21:11

马库斯在一个外部站点上发布了JDK8的代码:

代码语言:javascript
复制
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import oracle.jrockit.jfr.parser.*;

public class JDKParserTest {
    @SuppressWarnings("deprecation")
    public static void main(String[] args) throws IOException {
        File recordingFile = new File("C:\\demo\\wldf.jfr");
        Parser parser = new Parser(recordingFile);
        int count = 0;
        Iterator<ChunkParser> chunkIter = parser.iterator();
        while (chunkIter.hasNext()) {           
            ChunkParser chunkParser = chunkIter.next();
            for (FLREvent event : chunkParser) {
                count++;
                //System.out.println(event.toString());
            }
        }
        parser.close();
        System.out.println("Found " + count + " events");
    }
} 

这正是我构建自定义报告所需要的。参考文献:http://hirt.se/blog/?p=446

票数 0
EN

Stack Overflow用户

发布于 2021-03-10 11:27:38

解析示例中的JFR相关类自Java 9以来就已存在,因此无法在Java8或更早版本中执行该示例(至少没有很多欺骗)。

jfr.jar包含Java 运行时,因此它用于收集数据,而不是解析数据。

票数 1
EN

Stack Overflow用户

发布于 2021-03-12 19:26:24

Oracle JDK 8中的解析器API不受支持,也没有文档记录,但是如果您只想打印记录以达到标准输出,您可以尝试:

代码语言:javascript
复制
$ java oracle.jrockit.jfr.parser.Parser [-xml] <file>

如果您想对旧版本执行更复杂的操作,我将查看JMC解析器,它既支持Oracle JDK 8,也支持JDK 9中添加的新文件格式。

https://github.com/openjdk/jmc

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66555850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档