モジュール 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処理
すべてのメソッドは、Javadocでnullを受け入れるか返すかを定義します。 通常、これは"not null"として表されます。 許可されていない場所でnullパラメータが使用されている場合は、java.lang.NullPointerExceptionがスローされます。 java.io.IOExceptionなどの他の例外をスローするメソッドにnullパラメータを渡すと、java.lang.NullPointerExceptionが優先されます。ただし、メソッドのJavadocでnullの処理方法(つまり、java.lang.IllegalArgumentExceptionをスロー)が明示的に示されている場合を除きます。
- 導入されたバージョン:
- 9
-
クラスのサマリー クラス 説明 RecordedClass クラスやインタフェースなどの記録されたJava型。RecordedClassLoader 記録されたJavaクラス・ローダー。RecordedEvent 記録されたイベント。RecordedFrame スタックトレースに記録されたフレーム。RecordedMethod 記録された方法RecordedObject 1つ以上のフィールドで構成される複合データ型。RecordedStackTrace 記録されたスタックトレース。RecordedThread 記録されたスレッド。RecordedThreadGroup 記録されたJavaスレッド・グループ。RecordingFile 記録ファイル。