モジュール jdk.jfr
パッケージ jdk.jfr

クラスFlightRecorder


  • public final class FlightRecorder
    extends Object
    Flight Recorderへのアクセス、制御、管理のためのクラス。

    このクラスは、記録の作成、開始、停止、破棄、および状態の変更のリッスンに必要なメソッドを提供します。

    導入されたバージョン:
    9
    • メソッドの詳細

      • getRecordings

        public List<Recording> getRecordings()
        使用可能な記録の不変のリストを返します。 記録は作成時に使用可能になり、CLOSED状態にあるときは使用できなくなります(通常はRecording.close()の呼び出し後)。
        戻り値:
        nullではなく、記録のリスト
      • takeSnapshot

        public Recording takeSnapshot()
        利用可能なすべての記録データの記録スナップショットを作成します。

        スナップショットは、停止状態の合成記録です。 使用可能なデータがない場合は、サイズ0の記録が返されます。

        スナップショットは、時間間隔を狭める、データ・サイズを小さくするなど、後の操作に安定したデータ・アクセスを提供します。

        例,

         
         try (Recording snapshot = FlightRecorder.getFlightRecorder().takeSnapshot()) {
           if (snapshot.getSize() > 0) {
             snapshot.setMaxSize(100_000_000);
             snapshot.setMaxAge(Duration.ofMinutes(5));
             snapshot.dump(Paths.get("snapshot.jfr"));
           }
         }
         
         
        データへのアクセスがもはや必要でなくなると、記録を終了するのは発信者の責任です。
        戻り値:
        nullではなく、利用可能なすべての記録データのスナップショット
      • register

        public static void register​(Class<? extends Event> eventClass)
        イベント・クラスを登録します。

        イベント・クラスがすでに登録されている場合、このメソッドの呼び出しは無視されます。

        パラメータ:
        eventClass - nullではなく、登録するイベント・クラス
        例外:
        IllegalArgumentException - クラスが抽象であるか、Eventのサブクラスでない場合
        SecurityException - セキュリティ・マネージャが存在し、呼び出し元にFlightRecorderPermission("registerEvent")がない場合
      • unregister

        public static void unregister​(Class<? extends Event> eventClass)
        イベント・クラスの登録を解除します。

        イベント・クラスが登録されていない場合、このメソッドへの呼び出しは無視されます。

        パラメータ:
        eventClass - nullではなく、登録されていないイベント・クラス
        例外:
        IllegalArgumentException - クラスが抽象であるか、Eventのサブクラスでない場合
        SecurityException - セキュリティ・マネージャが存在し、呼び出し元にFlightRecorderPermission("registerEvent")がない場合
      • getFlightRecorder

        public static FlightRecorder getFlightRecorder()
                                                throws IllegalStateException,
                                                       SecurityException
        プラットフォーム用のFlight Recorderを返します。
        戻り値:
        nullではなくFlight Recorderのインスタンス
        例外:
        IllegalStateException - 商用機能がロックされていない場合、またはファイル・リポジトリを作成またはアクセスできない場合など、プラットフォームFlight Recorderを作成できなかった場合。
        SecurityException - セキュリティ・マネージャが存在し、呼び出し元にFlightRecorderPermission("accessFlightRecorder")がない場合
      • addPeriodicEvent

        public static void addPeriodicEvent​(Class<? extends Event> eventClass,
                                            Runnable hook)
                                     throws SecurityException
        定期的なイベントのコールバックを追加します。

        フックの実装は、他のFlight Recorder操作をブロックしないように、できるだけ早く返す必要があります。 フックは、指定されたタイプの1つ以上のイベントをコミットする必要があります。 フックが追加されると、"period"構成を使用して呼び出しを呼び出す間隔を構成できます。

        パラメータ:
        eventClass - nullではなく、フックを実行するクラス
        hook - フック、nullではない
        例外:
        IllegalArgumentException - classがEventのサブクラスでない場合、抽象型であるか、またはフックが既に追加されている
        IllegalStateException - イベント・クラスに注釈Registered(false)があり、手動で登録されなかった場合
        SecurityException - セキュリティ・マネージャが存在し、呼び出し元にFlightRecorderPermission("registerEvent")がない場合
      • removePeriodicEvent

        public static boolean removePeriodicEvent​(Runnable hook)
                                           throws SecurityException
        定期的なイベントのコールバック・フックを削除します。
        パラメータ:
        hook - 削除するフック、nullではない
        戻り値:
        フックが削除された場合はtrue、それ以外の場合はfalse
        例外:
        SecurityException - セキュリティ・マネージャが存在し、呼び出し元にFlightRecorderPermission("registerEvent")がない場合
      • getEventTypes

        public List<EventType> getEventTypes()
        現在登録されているすべてのイベントを含む不変のリストを返します。 デフォルトでは、イベントは最初に使用されたときに登録されます。通常、イベント・オブジェクトが割り当てられたときに登録されます。 イベントが早期に表示されるようにするには、register(Class)を呼び出すことによって登録をトリガーできます。
        戻り値:
        nullではなく、イベントのリスト
      • addListener

        public static void addListener​(FlightRecorderListener changeListener)
        レコーダ・リスナーを追加し、リスナーを呼び出すときに使用するAccessControlContextをキャプチャします。

        リスナーの追加時にFlight Recorderが既に初期化されている場合、このメソッドから戻る前にFlightRecorderListener.recorderInitialized(FlightRecorder)メソッドが呼び出されます。

        パラメータ:
        changeListener - リスナーはnullではなく追加
        例外:
        SecurityException - セキュリティ・マネージャが存在し、呼び出し元にFlightRecorderPermission("accessFlightRecorder")がない場合
      • removeListener

        public static boolean removeListener​(FlightRecorderListener changeListener)
        レコーダ・リスナーを削除します。

        同じリスナーが複数回追加された場合は、1つのインスタンスのみが削除されます。

        パラメータ:
        changeListener - 削除するリスナー、nullではありません
        戻り値:
        リスナーを削除できる場合はtrue、それ以外の場合はfalse
        例外:
        SecurityException - セキュリティ・マネージャが存在し、呼び出し元にFlightRecorderPermission("accessFlightRecorder")がない場合
      • isAvailable

        public static boolean isAvailable()
        JVMにFlight Recorder機能がある場合は、trueを返します。

        このメソッドの目的は、実際に初期化作業を実行せずにFlight Recorderを初期化できるかどうかを素早く確認することです。 実行時に値が変更される可能性があり、キャッシュするのは安全ではありません。

        戻り値:
        Flight Recorderが利用可能であればtrue、そうでなければfalse
        関連項目:
        for callback when Flight Recorder is initialized
      • isInitialized

        public static boolean isInitialized()
        Flight Recorderが初期化されている場合は、trueを返します。
        戻り値:
        Flight Recorderが初期化されている場合はtrue、そうでなければfalse
        関連項目:
        for callback when Flight Recorder is initialized