- すべての実装されたインタフェース:
- AutoCloseable,- EventStream
次の例では、デフォルトの構成を使用してイベントを記録し、ガベージ・コレクション、CPUロードおよびJVM情報イベントを標準出力に出力する方法を示します。
 Configuration c = Configuration.getConfiguration("default");
 try (var rs = new RecordingStream(c)) {
     rs.onEvent("jdk.GarbageCollection", System.out::println);
     rs.onEvent("jdk.CPULoad", System.out::println);
     rs.onEvent("jdk.JVMInformation", System.out::println);
     rs.start();
 }
 - 導入されたバージョン:
- 14
- 
コンストラクタのサマリーコンストラクタコンストラクタ説明現在のJVM (Java Virtual Machine)のイベント・ストリームを作成します。RecordingStream(Configuration configuration)構成の設定を使用してレコーディング・ストリームを作成します。
- 
メソッドのサマリー修飾子と型メソッド説明voidすべてのアクションが完了するか、ストリームがクローズされるか、現在のスレッドが中断されるまで、いずれか早いほうで発生します。voidawaitTermination(Duration timeout)すべてのアクションが完了するか、ストリームがクローズされるか、タイムアウトが発生するか、現在のスレッドが中断されるまで、いずれか先に発生するまでブロックします。voidclose()このリソースを閉じ、ベースとなるリソースをすべて解放します。イベントを無効にします。指定された名前のイベントを無効にします。イベントを有効にします。指定された名前のイベントを有効にします。voidストリームが閉じられたときに実行するアクションを登録します。void例外が発生した場合に実行するアクションを登録します。voidonEvent(String eventName, Consumer<RecordedEvent> action)名前と一致するすべてのイベントに対して実行するアクションを登録します。voidonEvent(Consumer<RecordedEvent> action)ストリーム内のすべてのイベントで実行するアクションを登録します。voidストリームのフラッシュ後に実行するアクションを登録します。booleanアクションを登録解除します。voidsetEndTime(Instant endTime)ストリームの終了時間を指定します。voidストリームで保持される過去のデータの量を決定します。voidsetMaxSize(long maxSize)ストリーム用に保持されるデータ量を決定します。voidsetOrdered(boolean ordered)イベントがストリームにコミットされた時間でソートされて、時系列順にイベントが到着することを指定します。voidsetReuse(boolean reuse)EventStream.onEvent(Consumer)処理のイベント・オブジェクトを再利用できることを指定します。voidsetSettings(Map<String,String> settings)このレコーディング・ストリームのすべての設定を置換します。voidsetStartTime(Instant startTime)ストリームの開始時間を指定します。voidstart()アクションの処理を開始します。voidアクションの非同期処理を開始します。クラス java.lang.Objectで宣言されたメソッドclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitインタフェースjdk.jfr.consumer.EventStreamで宣言されたメソッドonMetadata
- 
コンストラクタの詳細- 
RecordingStreampublic RecordingStream()現在のJVM (Java Virtual Machine)のイベント・ストリームを作成します。- 例外:
- IllegalStateException- flight Recorderを(たとえば、Java Virtual Machine (JVM)にFlight Recorderのサポートがない場合や、ファイル・リポジトリを作成したり、アクセスできない場合などです。)の作成できないか
- SecurityException- セキュリティ・マネージャが存在し、呼び出し元に- FlightRecorderPermission("accessFlightRecorder")がない場合
 
- 
RecordingStreampublic RecordingStream(Configuration configuration)構成の設定を使用してレコーディング・ストリームを作成します。次の例では、事前定義された構成を使用するレコーディング・ストリームの作成方法を示します。 var c = Configuration.getConfiguration("default"); try (var rs = new RecordingStream(c)) { rs.onEvent(System.out::println); rs.start(); }- パラメータ:
- configuration-- nullではなく、使用する設定が含まれている構成
- 例外:
- IllegalStateException- flight Recorderを(たとえば、Java Virtual Machine (JVM)にFlight Recorderのサポートがない場合や、ファイル・リポジトリを作成したり、アクセスできない場合などです。)の作成できないか
- SecurityException- セキュリティ・マネージャが使用され、FlightRecorderPermission "accessFlightRecorder"が設定されていない場合。
- 関連項目:
- Configuration
 
 
- 
- 
メソッドの詳細- 
enablepublic EventSettings enable(String name)指定された名前のイベントを有効にします。複数のイベントの名前が(たとえば、同じクラスが別のクラス・ローダーにロードされたとします。)である場合、名前と一致するすべてのイベントが有効になります。 特定のクラスを有効にするには、イベント・タイプIDの enable(Class)メソッドまたはString表現を使用します。- パラメータ:
- name-- nullではなく、イベントの設定
- 戻り値:
- nullではなく、さらなる構成のためのイベント設定
- 関連項目:
- EventType
 
- 
setSettingsこのレコーディング・ストリームのすべての設定を置換します。次の例では、"default"構成を使用して20秒記録し、その設定を"profile"構成に変更します。 Configuration defaultConfiguration = Configuration.getConfiguration("default"); Configuration profileConfiguration = Configuration.getConfiguration("profile"); try (var rs = new RecordingStream(defaultConfiguration)) { rs.onEvent(System.out::println); rs.startAsync(); Thread.sleep(20_000); rs.setSettings(profileConfiguration.getSettings()); Thread.sleep(20_000); }- パラメータ:
- settings-- nullではなく、設定する設定
- 関連項目:
- Recording.setSettings(Map)
 
- 
enablepublic EventSettings enable(Class<? extends Event> eventClass)イベントを有効にします。- パラメータ:
- eventClass-- nullではなく、有効にするイベント
- 戻り値:
- nullではなく、さらなる構成のためのイベント設定
- 例外:
- IllegalArgumentException-- eventClassが抽象クラスであるか、- Eventのサブクラスでない場合
 
- 
disablepublic EventSettings disable(String name)指定された名前のイベントを無効にします。(たとえば、同じクラスが別のクラス・ローダーにロードされたとします。)と同じ名前のイベントが複数ある場合、名前と一致するすべてのイベントが無効化されます。 特定のクラスを無効にするには、イベント・タイプIDの disable(Class)メソッドまたはString表現を使用します。- パラメータ:
- name-- nullではなく、イベントの設定
- 戻り値:
- nullではなく、さらなる構成のためのイベント設定
 
- 
disablepublic EventSettings disable(Class<? extends Event> eventClass)イベントを無効にします。- パラメータ:
- eventClass-- nullではなく、有効にするイベント
- 戻り値:
- nullではなく、さらなる構成のためのイベント設定
- 例外:
- IllegalArgumentException-- eventClassが抽象クラスであるか、- Eventのサブクラスでない場合
 
- 
setMaxAgepublic void setMaxAge(Duration maxAge)ストリームで保持される過去のデータの量を決定します。ディスクに格納されるデータのレコーディング量を制御するために、データを保持する最大時間を指定できます。 指定した時間よりも古いディスクに格納されているデータは、Java Virtual Machine (JVM)によって削除されます。 最大制限または最大保持時間をどちらも設定しない場合、イベントが発生したときに、レコーディングのサイズが無期限に大きくなる可能性があります - パラメータ:
- maxAge- データが保持される時間の長さ(無限大の場合は- null)。
- 例外:
- IllegalArgumentException-- maxAgeが負の場合
- IllegalStateException- レコーディングが- CLOSED状態にあるかどうか
 
- 
setMaxSizepublic void setMaxSize(long maxSize)ストリーム用に保持されるデータ量を決定します。ディスクに格納されるデータのレコーディング量を制御するために、保持するデータの最大量を指定できます。 上限を超えた場合、Java Virtual Machine (JVM)は最も古いチャンクを削除し、新しいチャンクのための余裕を作成します。 最大限度または最大経過時間を設定しないと、レコーディングのサイズが無期限に拡大することがあります。 サイズはバイト単位で測定されます。 - パラメータ:
- maxSize- 保存するデータの量(無限大の場合は- 0)
- 例外:
- IllegalArgumentException-- maxSizeが負の場合
- IllegalStateException- レコーディングが- CLOSED状態にある場合
 
- 
setReusepublic void setReuse(boolean reuse)インタフェース:EventStreamからコピーされた説明EventStream.onEvent(Consumer)処理のイベント・オブジェクトを再利用できることを指定します。reuseが trueに設定されている場合、アクションの完了後、アクションはイベント・オブジェクトへの参照を保持しません。- 定義:
- インタフェースEventStream内のsetReuse
- パラメータ:
- reuse- イベント・オブジェクトを再利用できる場合は- true、それ以外の場合は- false
 
- 
setOrderedpublic void setOrdered(boolean ordered)インタフェース:EventStreamからコピーされた説明イベントがストリームにコミットされた時間でソートされて、時系列順にイベントが到着することを指定します。- 定義:
- インタフェースEventStream内のsetOrdered
- パラメータ:
- ordered- イベント・オブジェクトが- EventStream.onEvent(Consumer)に時系列で到着した場合
 
- 
setStartTimepublic void setStartTime(Instant startTime)インタフェース:EventStreamからコピーされた説明ストリームの開始時間を指定します。開始時間は、ストリームの開始前に設定する必要があります - 定義:
- インタフェースEventStream内のsetStartTime
- パラメータ:
- startTime- 開始時間(- nullではない)
- 関連項目:
- EventStream.start(),- EventStream.startAsync()
 
- 
setEndTimepublic void setEndTime(Instant endTime)インタフェース:EventStreamからコピーされた説明ストリームの終了時間を指定します。終了時間は、ストリームの開始前に設定する必要があります。 最後に、ストリームはクローズされます。 - 定義:
- インタフェースEventStream内のsetEndTime
- パラメータ:
- endTime- 終了時間(- nullではない)
- 関連項目:
- EventStream.start(),- EventStream.startAsync()
 
- 
onEventpublic void onEvent(String eventName, Consumer<RecordedEvent> action)インタフェース:EventStreamからコピーされた説明名前と一致するすべてのイベントに対して実行するアクションを登録します。- 定義:
- インタフェースEventStream内のonEvent
- パラメータ:
- eventName- イベントの名前(- null以外)
- action-- nullではなく、イベント名と一致する各- RecordedEventに対して実行するアクション
 
- 
onEventpublic void onEvent(Consumer<RecordedEvent> action)インタフェース:EventStreamからコピーされた説明ストリーム内のすべてのイベントで実行するアクションを登録します。- 定義:
- インタフェースEventStream内のonEvent
- パラメータ:
- action-- nullではなく、各- RecordedEventで実行するアクション。
 
- 
onFlushpublic void onFlush(Runnable action)インタフェース:EventStreamからコピーされた説明ストリームのフラッシュ後に実行するアクションを登録します。- 定義:
- インタフェースEventStream内のonFlush
- パラメータ:
- action- ストリームのフラッシュ後に実行するアクション。- nullではありません
 
- 
onClosepublic void onClose(Runnable action)インタフェース:EventStreamからコピーされた説明ストリームが閉じられたときに実行するアクションを登録します。ストリームがすでにクローズされている場合は、現在のスレッド内でただちにアクションが実行されます。 - 定義:
- インタフェースEventStream内のonClose
- パラメータ:
- action- ストリームが閉じられた後に実行するアクション。- nullはクローズされません
- 関連項目:
- EventStream.close()
 
- 
onErrorインタフェース:EventStreamからコピーされた説明例外が発生した場合に実行するアクションを登録します。アクションが登録されていない場合は、例外スタック・トレースが標準エラーに出力されます。 アクションを登録すると、デフォルトの動作がオーバーライドされます。 複数のアクションが登録されている場合は、登録順に実行されます。 このメソッド自体が例外をスローすると、結果として生じる動作は未定義です。 - 定義:
- インタフェースEventStream内のonError
- パラメータ:
- action-- nullではなく例外が発生した場合に実行するアクション
 
- 
closepublic void close()インタフェース:AutoCloseableからコピーされた説明このリソースを閉じ、ベースとなるリソースをすべて解放します。 このメソッドは、try-with-resources文で管理されているオブジェクトで自動的に呼び出されます。このインタフェース・メソッドは Exceptionをスローするように宣言されていますが、実装者には、closeメソッドの具象実装を宣言する際に、より具体的な例外をスローするか、またはクローズ処理で失敗できない場合は例外を一切スローしないことを強くお薦めします。クローズ操作が失敗する可能のあるケースでは、実装者は細心の注意を払う必要があります。 例外をスローする前に、ベースとなるリソースを解放し、リソースをクローズ済みとして内部的にマークすることを強くお薦めします。 closeメソッドが複数回呼び出される可能性は低いため、これによってリソースはタイムリに解放されるようになります。 さらに、リソースが別のリソースをラップするか、別のリソースによってラップされるときに発生する可能性のある問題も減少します。このインタフェースの実装者には、 closeメソッドからInterruptedExceptionがスローされないようにすることも強くお薦めします。 この例外はスレッドの割込みステータスと相互に作用するので、InterruptedExceptionが抑制されるとおそらく実行時の誤動作が発生します。 より一般的には、ある例外を抑制すると問題が発生する場合、AutoCloseable.closeメソッドはその例外をスローすべきではありません。Closeableのcloseメソッドと異なり、このcloseメソッドはべき等である必要はありません。 つまり、このcloseメソッドを複数回呼び出すと何らかの副作用が発生する可能性がありますが、これは、複数回呼び出されても副作用がないことが要求されるCloseable.closeと異なります。 ただし、このインタフェースの実装者には、自身のcloseメソッドをべき等にすることを強くお薦めします。- 定義:
- close、インタフェース:- AutoCloseable
- 定義:
- インタフェースEventStream内のclose
 
- 
removepublic boolean remove(Object action)インタフェース:EventStreamからコピーされた説明アクションを登録解除します。アクションが複数回登録されている場合、すべてのインスタンスが登録解除されます。 - 定義:
- インタフェースEventStream内のremove
- パラメータ:
- action- 登録解除する処理(- nullではない)
- 戻り値:
- アクションが登録解除された場合はtrue、登録されていない場合はfalse
- 関連項目:
- EventStream.onEvent(Consumer),- EventStream.onEvent(String, Consumer),- EventStream.onFlush(Runnable),- EventStream.onClose(Runnable),- EventStream.onError(Consumer)
 
- 
startpublic void start()インタフェース:EventStreamからコピーされた説明- 定義:
- インタフェースEventStream内のstart
 
- 
startAsyncpublic void startAsync()アクションの非同期処理を開始します。アクションは、単一の独立したスレッドで実行されます。 ストリームを停止するには、 close()メソッドを使用します。次の例では、CPU使用率を10秒間出力します。 現在のスレッドがtry-with-resourcesブロックから離れると、ストリームは停止/クローズされます。 try (var stream = new RecordingStream()) { stream.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1)); stream.onEvent("jdk.CPULoad", event -> { System.out.println(event); }); stream.startAsync(); Thread.sleep(10_000); }- 定義:
- インタフェースEventStream内のstartAsync
- 例外:
- IllegalStateException- ストリームがすでに開始されているか、閉じている場合
 
- 
awaitTerminationpublic void awaitTermination(Duration timeout) throws InterruptedExceptionインタフェース:EventStreamからコピーされた説明すべてのアクションが完了するか、ストリームがクローズされるか、タイムアウトが発生するか、現在のスレッドが中断されるまで、いずれか先に発生するまでブロックします。- 定義:
- インタフェースEventStream内のawaitTermination
- パラメータ:
- timeout-- nullではなく最大待機時間
- 例外:
- InterruptedException- 待機中に割込みが発生した場合
- 関連項目:
- EventStream.start(),- EventStream.startAsync(),- Thread.interrupt()
 
- 
awaitTerminationpublic void awaitTermination() throws InterruptedExceptionインタフェース:EventStreamからコピーされた説明すべてのアクションが完了するか、ストリームがクローズされるか、現在のスレッドが中断されるまで、いずれか早いほうで発生します。- 定義:
- インタフェースEventStream内のawaitTermination
- 例外:
- InterruptedException- 待機中に割込みが発生した場合
- 関連項目:
- EventStream.start(),- EventStream.startAsync(),- Thread.interrupt()
 
 
-