1 初めてのイベントの作成および記録

サンプルHelloWorldSample.javaでは、com.oracle.Helloというイベントが作成されます。

import jdk.jfr.Event;
import jdk.jfr.Label;
import jdk.jfr.Name;

public class HelloWorldSample {

    @Name("com.oracle.Hello")
    @Label("Hello World!")
    static class Hello extends Event {
        @Label("Message")
        String message;
    }

    public static void main(String... args) {
        Hello event = new Hello();
        event.begin();
        event.message = "Hello world!";
        event.commit();
    }
}

次のコマンドを使用して、HelloWorldSampleを実行します:

java -XX:StartFlightRecording:filename=hw.jfr HelloWorldSample.java

これにより、HelloWorldSampleが実行され、hw.jfrという記録ファイルが作成されます。

記録ファイルの内容を表示するには、次のコマンドを実行します:

jfr print hw.jfr

Flight Recorderにより記録されたすべてのイベントが出力されます。

自分で作成したHelloイベントのみを表示する場合は、次のコマンドを実行します:

jfr print --events Hello hw.jfr

次のような出力が表示されます:

com.oracle.Hello {
  startTime = 16:44:14.841
  duration = 0.0170 ms
  message = "Hello world!"
  eventThread = "main" (javaThreadId = 1)
  stackTrace = [
    HelloWorldSample.main(String[]) line: 18
    jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[])
    jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Object, Object[]) line: 64
    jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
    java.lang.reflect.Method.invoke(Object, Object[]) line: 564
    ...
  ]
}