模块 jdk.jfr
Package 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()); } }
空操作
所有方法都定义它们是否在Javadoc中接受或返回null
。 通常,这表示为"not null"
。 如果在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 录音文件。