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文件的作用是什么?
发布于 2021-03-21 20:21:11
马库斯在一个外部站点上发布了JDK8的代码:
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
发布于 2021-03-10 11:27:38
解析示例中的JFR相关类自Java 9以来就已存在,因此无法在Java8或更早版本中执行该示例(至少没有很多欺骗)。
jfr.jar包含Java 运行时,因此它用于收集数据,而不是解析数据。
发布于 2021-03-12 19:26:24
Oracle JDK 8中的解析器API不受支持,也没有文档记录,但是如果您只想打印记录以达到标准输出,您可以尝试:
$ java oracle.jrockit.jfr.parser.Parser [-xml] <file>如果您想对旧版本执行更复杂的操作,我将查看JMC解析器,它既支持Oracle JDK 8,也支持JDK 9中添加的新文件格式。
https://stackoverflow.com/questions/66555850
复制相似问题