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

クラスFlightRecorder

java.lang.Object
jdk.jfr.FlightRecorder

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

このクラスは、レコーディングの作成、起動、停止および破棄に必要なメソッドを提供します。

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

    • getRecordings

      public List<Recording> getRecordings()
      使用可能なレコーディングの不変のリストを返します。

      レコーディングは、作成時に使用可能になります。 Recording.close()をコールした後、通常はCLOSED状態にある場合は使用できなくなります。

      戻り値:
      nullではなく、レコーディングのリスト
    • takeSnapshot

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

      スナップショットは、STOPPPED状態での合成されたレコーディングです。 データが使用できない場合、サイズが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を(たとえば、Java Virtual Machine (JVM)に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 - クラスが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()
      Java Virtual Machine (JVM)のFlight Recorder機能がある場合は、trueを返します。

      このメソッドでは、初期化作業を実際に実行せずに、Flight Recorderを初期化できるかどうかを迅速にチェックできます。 実行時に値が変更される可能性があり、キャッシュするのは安全ではありません。

      戻り値:
      true、Flight Recorderが使用可能な場合はtrue、それ以外の場合はfalse
      関連項目:
      for callback when Flight Recorder is initialized
    • isInitialized

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