モジュール jdk.jfr

パッケージ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-handling

すべてのメソッドは、Javadocでnullを受け入れるか返すかを定義します。 通常これは"not null"で表されます。 nullパラメータが使用されない場合は、java.lang.NullPointerExceptionがスローされます。 nullパラメータがjava.io.IOExceptionのような他の例外をスローするメソッドに渡された場合、メソッドのJavadocがnullの処理方法、つまりjava.lang.IllegalArgumentExceptionを明示的に指定しない限り、java.lang.NullPointerExceptionが優先されます。

導入されたバージョン:
9