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