# Package jdk.jfr.consumer

package jdk.jfr.consumer
This package contains classes for consuming Flight Recorder data.

In the following example, the program prints a histogram of all method samples in a recording.

    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().getFirst())
            .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()));
    }

Null-handling

All methods define whether they accept or return `null` in the Javadoc. Typically this is expressed as `"not null"`. If a `null` parameter is used where it is not allowed, a `java.lang.NullPointerException` is thrown. If a `null` parameters is passed to a method that throws other exceptions, such as `java.io.IOException`, the `java.lang.NullPointerException` takes precedence, unless the Javadoc for the method explicitly states how `null` is handled, i.e. by throwing `java.lang.IllegalArgumentException`.

Since:
  9

- Related Packages
  Package
  Description
  jdk.jfr
  This package provides classes to create events and control Flight Recorder.
- Class
  Description
  EventStream
  Represents a stream of events.
  MetadataEvent
  Event that contains information about event types and configurations.
  RecordedClass
  A recorded Java type, such as a class or an interface.
  RecordedClassLoader
  A recorded Java class loader.
  RecordedEvent
  A recorded event.
  RecordedFrame
  A recorded frame in a stack trace.
  RecordedMethod
  A recorded method.
  RecordedObject
  A complex data type that consists of one or more fields.
  RecordedStackTrace
  A recorded stack trace.
  RecordedThread
  A recorded thread.
  RecordedThreadGroup
  A recorded Java thread group.
  RecordingFile
  A recording file.
  RecordingStream
  A recording stream produces events from the current JVM (Java Virtual Machine).