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