Module jdk.jfr
Package jdk.jfr.consumer
package jdk.jfr.consumer
该包含有用于消费飞行记录器数据的类。
在以下示例中,程序打印了记录中所有方法样本的直方图。
public static void main(String[] args) throws IOException {
if (args.length != 1) {
System.err.println("必须指定一个记录文件。");
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
-
ClassDescription表示事件流。包含有关事件类型和配置的信息的事件。记录的Java类型,如类或接口。记录的Java类加载器。记录的事件。堆栈跟踪中的记录帧。记录的方法。由一个或多个字段组成的复杂数据类型。记录的堆栈跟踪。记录的线程。记录的Java线程组。记录文件。记录流从当前JVM(Java虚拟机)产生事件。