- java.lang.Object
-
- jdk.jfr.FlightRecorder
-
public final class FlightRecorder extends Object
Flight Recorderへのアクセス、制御、管理のためのクラス。このクラスは、記録の作成、開始、停止、破棄、および状態の変更のリッスンに必要なメソッドを提供します。
- 導入されたバージョン:
- 9
-
-
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 static voidaddListener(FlightRecorderListener changeListener)レコーダ・リスナーを追加し、リスナーを呼び出すときに使用するAccessControlContextをキャプチャします。static voidaddPeriodicEvent(Class<? extends Event> eventClass, Runnable hook)定期的なイベントのコールバックを追加します。List<EventType>getEventTypes()現在登録されているすべてのイベントを含む不変のリストを返します。static FlightRecordergetFlightRecorder()プラットフォーム用のFlight Recorderを返します。List<Recording>getRecordings()使用可能な記録の不変のリストを返します。static booleanisAvailable()JVMにFlight Recorder機能がある場合は、trueを返します。static booleanisInitialized()Flight Recorderが初期化されている場合は、trueを返します。static voidregister(Class<? extends Event> eventClass)イベント・クラスを登録します。static booleanremoveListener(FlightRecorderListener changeListener)レコーダ・リスナーを削除します。static booleanremovePeriodicEvent(Runnable hook)定期的なイベントのコールバック・フックを削除します。RecordingtakeSnapshot()利用可能なすべての記録データの記録スナップショットを作成します。static voidunregister(Class<? extends Event> eventClass)イベント・クラスの登録を解除します。
-
-
-
メソッドの詳細
-
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
-
-