Module jdk.jfr

# 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 Summary
  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.