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) {
     if (args.length != 0) {
       System.out.println("Must specify recording file.");
       return;
     }
     try (RecordingFile f = new RecordingFile(Paths.get(args[0]))) {
       Map<String, SimpleEntry<String, Integer>> histogram = new HashMap<>();
       int total = 0;
       while (f.hasMoreEvents()) {
         RecordedEvent event = f.readEvent();
         if (event.getEventType().getName().equals("jdk.ExecutionSample")) {
           RecordedStackTrace s = event.getStackTrace();
           if (s != null) {
             RecordedFrame topFrame= s.getFrames().get(0);
             if (topFrame.isJavaFrame())  {
               RecordedMethod method = topFrame.getMethod();
               String methodName = method.getType().getName() + "#" + method.getName() + " " + method.getDescriptor();
               Entry entry = histogram.computeIfAbsent(methodName, u -> new SimpleEntry<String, Integer>(methodName, 0));
               entry.setValue(entry.getValue() + 1);
               total++;
             }
           }
         }
       }
       List<SimpleEntry<String, Integer>> entries = new ArrayList<>(histogram.values());
       entries.sort((u, v) -> v.getValue().compareTo(u.getValue()));
       for (SimpleEntry<String, Integer> c : entries) {
         System.out.printf("%2.0f%% %s\n", 100 * (float) c.getValue() / total, c.getKey());
       }
       System.out.println("\nSample count: " + total);
     } catch (IOException ioe) {
       System.out.println("Error reading file " + args[0] + ". " + ioe.getMessage());
     }
   }

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
Class Description
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.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.jfr/jdk/jfr/consumer/package-summary.html