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
parameter 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.
| Modifier and Type | Interface and Description |
|---|---|
| public interface | EventStream
Represents a stream of events. |
| Modifier and Type | Class and Description |
|---|---|
| public class | MetadataEvent
Event that contains information about event types and configurations. |
| public class | RecordedClass
A recorded Java type, such as a class or an interface. |
| public class | RecordedClassLoader
A recorded Java class loader. |
| public class | RecordedEvent
A recorded event. |
| public class | RecordedFrame
A recorded frame in a stack trace. |
| public class | RecordedMethod
A recorded method. |
| public class | RecordedObject
A complex data type that consists of one or more fields. |
| public class | RecordedStackTrace
A recorded stack trace. |
| public class | RecordedThread
A recorded thread. |
| public class | RecordedThreadGroup
A recorded Java thread group. |
| public class | RecordingFile
A recording file. |
| public class | RecordingStream
A recording stream produces events from the current JVM (Java Virtual Machine). |