Пакет jdk.jfr.consumer

Этот пакет содержит классы для потребления данных Flight Recorder.

В следующем примере программа выводит гистограмму всех выборок методов в записи.

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 в Javadoc. Обычно это выражается как "not null". Если параметр null используется там, где это запрещено, выбрасывается java.lang.NullPointerException. Если параметр null передается методу, который выбрасывает другие исключения, такие как java.io.IOException, то исключение java.lang.NullPointerException имеет приоритет, если в Javadoc метода не указано, как обрабатывается null, например, путём выбрасывания java.lang.IllegalArgumentException.

С:
9
КлассОписание
RecordedClass

Записанный тип Java, например, класс или интерфейс.

RecordedClassLoader

Записанный загрузчик классов Java.

RecordedEvent

Записанное событие.

RecordedFrame

Записанная строка стека вызовов.

RecordedMethod

Записанный метод.

RecordedObject

Сложный тип данных, состоящий из одного или нескольких полей.

RecordedStackTrace

Записанный стек вызовов.

RecordedThread

Записанный поток.

RecordedThreadGroup

Записанная группа потоков Java.

RecordingFile

Файл записи.

© 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

Spec-Zone .ru
спецификации, руководства, описания, API