- すべての実装されたインタフェース:
AutoCloseable
,EventStream
MBeanServerConnection
を使用してネットワーク経由でイベントを直列化できるEventStream
の実装。
次の例は、リモート・ホストでガベージ・コレクションの休止時間およびCPU使用率を記録し、イベントを標準出力に出力する方法を示しています。
String host = "com.example"; int port = 4711; String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi"; JMXServiceURL u = new JMXServiceURL(url); JMXConnector c = JMXConnectorFactory.connect(u); MBeanServerConnection conn = c.getMBeanServerConnection(); try (var rs = new RemoteRecordingStream(conn)) { rs.enable("jdk.GCPhasePause").withoutThreshold(); rs.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1)); rs.onEvent("jdk.CPULoad", System.out::println); rs.onEvent("jdk.GCPhasePause", System.out::println); rs.start(); }
- 導入されたバージョン:
- 16
-
コンストラクタのサマリー
コンストラクタ説明RemoteRecordingStream
(MBeanServerConnection connection) FlightRecorderMXBean
が登録されているMBeanServerConnection
に対して演算するイベント・ストリームを作成します。RemoteRecordingStream
(MBeanServerConnection connection, Path directory) FlightRecorderMXBean
が登録されているMBeanServerConnection
に対して演算するイベント・ストリームを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明void
すべてのアクションが完了するか、ストリームがクローズされるか、現在のスレッドが中断されるまで、いずれか早いほうで発生します。void
awaitTermination
(Duration timeout) すべてのアクションが完了するか、ストリームがクローズされるか、タイムアウトが発生するか、現在のスレッドが中断されるまで、いずれか先に発生するまでブロックします。void
close()
このストリームに関連付けられているすべてのリソースを解放します。指定された名前のイベントを無効にします。void
レコーディング・データをファイルに書き込みます。指定された名前のイベントを有効にします。void
ストリームが閉じられたときに実行するアクションを登録します。void
例外が発生した場合に実行するアクションを登録します。void
onEvent
(String eventName, Consumer<RecordedEvent> action) 名前と一致するすべてのイベントに対して実行するアクションを登録します。void
onEvent
(Consumer<RecordedEvent> action) ストリーム内のすべてのイベントで実行するアクションを登録します。void
ストリームのフラッシュ後に実行するアクションを登録します。boolean
アクションを登録解除します。void
setEndTime
(Instant endTime) ストリームの終了時間を指定します。void
ストリームで保持される過去のデータの量を決定します。void
setMaxSize
(long maxSize) ストリーム用に保持されるデータ量を決定します。void
setOrdered
(boolean ordered) イベントがストリームにコミットされた時間でソートされて、時系列順にイベントが到着することを指定します。void
setReuse
(boolean reuse) EventStream.onEvent(Consumer)
処理のイベント・オブジェクトを再利用できることを指定します。void
setSettings
(Map<String, String> settings) このレコーディング・ストリームのすべての設定を置換します。void
setStartTime
(Instant startTime) ストリームの開始時間を指定します。void
start()
アクションの処理を開始します。void
アクションの非同期処理を開始します。クラス java.lang.Objectで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インタフェースjdk.jfr.consumer.EventStreamで宣言されたメソッド
onMetadata
-
コンストラクタの詳細
-
RemoteRecordingStream
public RemoteRecordingStream(MBeanServerConnection connection) throws IOException FlightRecorderMXBean
が登録されているMBeanServerConnection
に対して演算するイベント・ストリームを作成します。イベント設定を構成するには、
setSettings(Map)
を使用します。- パラメータ:
connection
-FlightRecorderMXBean
が登録されているMBeanServerConnection
。null
ではない- 例外:
IOException
- ストリームをオープンできない場合、リポジトリまたはFlightRecorderMXBean
にアクセスしようとすると、I/Oエラーが発生SecurityException
- セキュリティ・マネージャが存在し、checkRead
メソッドがディレクトリへの読取りアクセスを拒否するか、ディレクトリ内のファイルを拒否する場合。
-
RemoteRecordingStream
public RemoteRecordingStream(MBeanServerConnection connection, Path directory) throws IOException FlightRecorderMXBean
が登録されているMBeanServerConnection
に対して演算するイベント・ストリームを作成します。イベント設定を構成するには、
setSettings(Map)
を使用します。- パラメータ:
connection
-FlightRecorderMXBean
が登録されているMBeanServerConnection
。null
ではないdirectory
-null
ではなく、ダウンロードされたイベント・データを格納するディレクトリ- 例外:
IOException
- ストリームをオープンできない場合、リポジトリまたはFlightRecorderMXBean
にアクセスしようとすると、I/Oエラーが発生SecurityException
- セキュリティ・マネージャが存在し、checkRead
メソッドがディレクトリへの読取りアクセスを拒否するか、ディレクトリ内のファイルを拒否する場合。
-
-
メソッドの詳細
-
setSettings
このレコーディング・ストリームのすべての設定を置換します。次の例では、"default"構成の設定を使用してリモート・ホストに接続し、イベントをストリームします。
{ String host = "com.example"; int port = 4711; String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi"; JMXServiceURL u = new JMXServiceURL(url); JMXConnector c = JMXConnectorFactory.connect(u); MBeanServerConnection conn = c.getMBeanServerConnection(); try (final var rs = new RemoteRecordingStream(conn)) { rs.onMetadata(e -> { for (Configuration c : e.getConfigurations()) { if (c.getName().equals("default")) { rs.setSettings(c.getSettings()); } } }); rs.onEvent(System.out::println); rs.start(); }
- パラメータ:
settings
-null
ではなく、設定する設定- 関連項目:
-
disable
public EventSettings disable(String name) 指定された名前のイベントを無効にします。(たとえば、同じクラスが別のクラス・ローダーにロードされたとします。)と同じ名前のイベントが複数ある場合、名前と一致するすべてのイベントが無効化されます。
- パラメータ:
name
-null
ではなく、イベントの設定- 戻り値:
null
ではなく、さらなる構成のためのイベント設定
-
enable
public EventSettings enable(String name) 指定された名前のイベントを有効にします。複数のイベントの名前が(たとえば、同じクラスが別のクラス・ローダーにロードされたとします。)である場合、名前と一致するすべてのイベントが有効になります。
- パラメータ:
name
-null
ではなく、イベントの設定- 戻り値:
null
ではなく、さらなる構成のためのイベント設定- 関連項目:
-
setMaxAge
public void setMaxAge(Duration maxAge) ストリームで保持される過去のデータの量を決定します。ディスクに格納されるデータのレコーディング量を制御するために、データを保持する最大時間を指定できます。 指定した時間よりも古いディスクに格納されているデータは、Java Virtual Machine (JVM)によって削除されます。
最大制限も最大有効期間も設定されていない場合、イベントが消費されないと、レコーディングのサイズが無限に大きくなる可能性があります。
- パラメータ:
maxAge
- データが保持される時間の長さ(無限大の場合はnull
)。- 例外:
IllegalArgumentException
-maxAge
が負の場合IllegalStateException
- レコーディングがCLOSED
状態にあるかどうか
-
setMaxSize
public void setMaxSize(long maxSize) ストリーム用に保持されるデータ量を決定します。ディスクに格納されるデータのレコーディング量を制御するために、保持するデータの最大量を指定できます。 上限を超えた場合、Java Virtual Machine (JVM)は最も古いチャンクを削除し、新しいチャンクのための余裕を作成します。
最大制限も最大有効期間も設定されていない場合、イベントが消費されないと、レコーディングのサイズが無限に大きくなる可能性があります。
サイズはバイト単位で測定されます。
- パラメータ:
maxSize
- 保存するデータの量(無限大の場合は0
)- 例外:
IllegalArgumentException
-maxSize
が負の場合IllegalStateException
- レコーディングがCLOSED
状態にある場合
-
onEvent
public void onEvent(Consumer<RecordedEvent> action) インタフェース:EventStream
からコピーされた説明ストリーム内のすべてのイベントで実行するアクションを登録します。- 定義:
- インタフェース
EventStream
内のonEvent
- パラメータ:
action
-null
ではなく、各RecordedEvent
で実行するアクション。
-
onEvent
public void onEvent(String eventName, Consumer<RecordedEvent> action) インタフェース:EventStream
からコピーされた説明名前と一致するすべてのイベントに対して実行するアクションを登録します。- 定義:
- インタフェース
EventStream
内のonEvent
- パラメータ:
eventName
- イベントの名前(null
以外)action
-null
ではなく、イベント名と一致する各RecordedEvent
に対して実行するアクション
-
onFlush
public void onFlush(Runnable action) インタフェース:EventStream
からコピーされた説明ストリームのフラッシュ後に実行するアクションを登録します。- 定義:
- インタフェース
EventStream
内のonFlush
- パラメータ:
action
- ストリームのフラッシュ後に実行するアクション。null
ではありません
-
onError
インタフェース:EventStream
からコピーされた説明例外が発生した場合に実行するアクションを登録します。アクションが登録されていない場合は、例外スタック・トレースが標準エラーに出力されます。
アクションを登録すると、デフォルトの動作がオーバーライドされます。 複数のアクションが登録されている場合は、登録順に実行されます。
このメソッド自体が例外をスローすると、結果として生じる動作は未定義です。
- 定義:
- インタフェース
EventStream
内のonError
- パラメータ:
action
-null
ではなく例外が発生した場合に実行するアクション
-
onClose
public void onClose(Runnable action) インタフェース:EventStream
からコピーされた説明ストリームが閉じられたときに実行するアクションを登録します。ストリームがすでにクローズされている場合は、現在のスレッド内でただちにアクションが実行されます。
- 定義:
- インタフェース
EventStream
内のonClose
- パラメータ:
action
- ストリームが閉じられた後に実行するアクション。null
はクローズされません- 関連項目:
-
close
public void close()インタフェース:EventStream
からコピーされた説明このストリームに関連付けられているすべてのリソースを解放します。ストリームが非同期または同期的に起動された場合は、すぐに、または次のフラッシュの後に停止されます。 このメソッドは、登録されているすべてのアクションが戻る前に完了することを保証しません。
すでに閉じられているストリームを閉じても、何の影響もありません。
- 定義:
close
、インタフェースAutoCloseable
- 定義:
- インタフェース
EventStream
内のclose
-
remove
public boolean remove(Object action) インタフェース:EventStream
からコピーされた説明アクションを登録解除します。アクションが複数回登録されている場合、すべてのインスタンスが登録解除されます。
- 定義:
- インタフェース
EventStream
内のremove
- パラメータ:
action
- 登録解除する処理(null
ではない)- 戻り値:
- アクションが登録解除された場合は
true
、登録されていない場合はfalse
- 関連項目:
-
setReuse
public void setReuse(boolean reuse) インタフェース:EventStream
からコピーされた説明EventStream.onEvent(Consumer)
処理のイベント・オブジェクトを再利用できることを指定します。reuseが
true
に設定されている場合、アクションの完了後、アクションはイベント・オブジェクトへの参照を保持しません。- 定義:
- インタフェース
EventStream
内のsetReuse
- パラメータ:
reuse
- イベント・オブジェクトを再利用できる場合はtrue
、それ以外の場合はfalse
-
setOrdered
public void setOrdered(boolean ordered) インタフェース:EventStream
からコピーされた説明イベントがストリームにコミットされた時間でソートされて、時系列順にイベントが到着することを指定します。- 定義:
- インタフェース
EventStream
内のsetOrdered
- パラメータ:
ordered
- イベント・オブジェクトがEventStream.onEvent(Consumer)
に時系列で到着した場合
-
setStartTime
public void setStartTime(Instant startTime) インタフェース:EventStream
からコピーされた説明ストリームの開始時間を指定します。開始時間は、ストリームの開始前に設定する必要があります
- 定義:
- インタフェース
EventStream
内のsetStartTime
- パラメータ:
startTime
- 開始時間(null
ではない)- 関連項目:
-
setEndTime
public void setEndTime(Instant endTime) インタフェース:EventStream
からコピーされた説明ストリームの終了時間を指定します。終了時間は、ストリームの開始前に設定する必要があります。
最後に、ストリームはクローズされます。
- 定義:
- インタフェース
EventStream
内のsetEndTime
- パラメータ:
endTime
- 終了時間(null
ではない)- 関連項目:
-
start
public void start()インタフェース:EventStream
からコピーされた説明- 定義:
- インタフェース
EventStream
内のstart
-
startAsync
public void startAsync()インタフェース:EventStream
からコピーされた説明- 定義:
- インタフェース
EventStream
内のstartAsync
-
dump
public void dump(Path destination) throws IOException レコーディング・データをファイルに書き込みます。レコーディング・ストリームは開始する必要がありますが、クローズしないでください。
ストリームを開始する前に、最大年齢または最大サイズを設定することを強くお薦めします。 それ以外の場合、ダンプにイベントが含まれていない可能性があります。
- パラメータ:
destination
-null
ではなく、レコーディング・データが書き込まれるロケーション- 例外:
IOException
- 指定されたロケーションにレコーディング・データをコピーできない場合、またはストリームが閉じているか、または開始されていない場合。SecurityException
- セキュリティ・マネージャが存在し、呼出し側が宛先パスに書き込むFilePermission
を持っていない場合- 導入されたバージョン:
- 17
- 関連項目:
-
awaitTermination
public void awaitTermination(Duration timeout) throws InterruptedException インタフェース:EventStream
からコピーされた説明すべてのアクションが完了するか、ストリームがクローズされるか、タイムアウトが発生するか、現在のスレッドが中断されるまで、いずれか先に発生するまでブロックします。- 定義:
- インタフェース
EventStream
内のawaitTermination
- パラメータ:
timeout
-null
ではなく最大待機時間- 例外:
InterruptedException
- 待機中に割込みが発生した場合- 関連項目:
-
awaitTermination
public void awaitTermination() throws InterruptedExceptionインタフェース:EventStream
からコピーされた説明すべてのアクションが完了するか、ストリームがクローズされるか、現在のスレッドが中断されるまで、いずれか早いほうで発生します。- 定義:
- インタフェース
EventStream
内のawaitTermination
- 例外:
InterruptedException
- 待機中に割込みが発生した場合- 関連項目:
-