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