Пакет jdk.jfr.consumer
В следующем примере программа выводит гистограмму всех образцов методов в записи.
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 в Javadoc. Обычно это выражается как "not null". Если используется null параметр там, где он не разрешен, выбрасывается java.lang.NullPointerException. Если null параметры передаются методу, который выбрасывает другие исключения, такие как java.io.IOException, то java.lang.NullPointerException имеет приоритет, если в Javadoc метода не указано, как обрабатываются null, т.е. путём выбрасывания java.lang.IllegalArgumentException.
- Since:
- 9
| Класс | Описание |
|---|---|
| EventStream | Представляет поток событий. |
| MetadataEvent | Событие, содержащее информацию о типах событий и конфигурациях. |
| RecordedClass | Записанный тип Java, например, класс или интерфейс. |
| RecordedClassLoader | Записанный загрузчик классов Java. |
| RecordedEvent | Записанное событие. |
| RecordedFrame | Записанная кадр в стеке вызовов. |
| RecordedMethod | Записанный метод. |
| RecordedObject | Сложный тип данных, состоящий из одного или нескольких полей. |
| RecordedStackTrace | Записанный стек вызовов. |
| RecordedThread | Записанная нить. |
| RecordedThreadGroup | Записанная группа нитей Java. |
| RecordingFile | Файл записи. |
| RecordingStream | Поток записи генерирует события из текущей JVM (Java Virtual Machine). |
© 1993, 2023, 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/21/docs/api/jdk.jfr/jdk/jfr/consumer/package-summary.html