模块 jdk.jfr
包 jdk.jfr.consumer
包jdk.jfr.consumer
此包包含用于使用 Flight Recorder 数据的类。
在以下示例中,程序打印记录中所有方法样本的直方图。
public static void main(String[] args) throws IOException {
if (args.length != 1) {
System.err.println("Must specify a recording file.");
return;
}
RecordingFile.readAllEvents(Path.of(args[0])).stream()
.filter(e -> e.getEventType().getName().equals("jdk.ExecutionSample"))
.map(e -> e.getStackTrace())
.filter(s -> s != null)
.map(s -> s.getFrames().get(0))
.filter(f -> f.isJavaFrame())
.map(f -> f.getMethod())
.collect(
Collectors.groupingBy(m -> m.getType().getName() + "." + m.getName() + " " + m.getDescriptor(),
Collectors.counting()))
.entrySet()
.stream()
.sorted((a, b) -> b.getValue().compareTo(a.getValue()))
.forEach(e -> System.out.printf("%8d %s\n", e.getValue(), e.getKey()));
}
空值处理
所有方法都在 Javadoc 中定义它们是接受还是返回 null。通常这表示为 "not null" 。如果在不允许的地方使用 null 参数,则会抛出 java.lang.NullPointerException。如果将 null 参数传递给抛出其他异常的方法,例如 java.io.IOException ,则 java.lang.NullPointerException 优先,除非该方法的 Javadoc 明确说明如何处理 null,即抛出 java.lang.IllegalArgumentException。
- 自从:
- 9
-
类描述表示事件流。包含有关事件类型和配置信息的事件。记录的 Java 类型,例如类或接口。一个记录的 Java 类加载器。记录的事件。堆栈跟踪中记录的帧。记录的方法。由一个或多个字段组成的复杂数据类型。记录的堆栈跟踪。一个记录的线程。一个记录的 Java 线程组。录音文件。记录流从当前 JVM(Java 虚拟机)生成事件。