- java.lang.Object
-
- jdk.jfr.Recording
-
- すべての実装されたインタフェース:
Closeable,AutoCloseable
public final class Recording extends Object implements Closeable
記録データをディスクに構成、開始、停止、ダンプする手段を提供します。例,
Configuration c = Configuration.getConfiguration("default"); Recording r = new Recording(c); r.start(); System.gc(); Thread.sleep(5000); r.stop(); r.copyTo(Files.createTempFile("my-recording", ".jfr"));- 導入されたバージョン:
- 9
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 Recording()設定なしで記録を作成します。Recording(Configuration configuration)構成からの設定でレコーディングを作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 voidclose()この記録に関連するすべてのデータを解放します。Recordingcopy(boolean stop)このレコーディングのクローンを返しますが、新しいレコーディングIDと名前を返します。EventSettingsdisable(Class<? extends Event> eventClass)イベントを無効にします。EventSettingsdisable(String name)指定された名前のイベントを無効にします。voiddump(Path destination)記録データをファイルに書き込みます。EventSettingsenable(Class<? extends Event> eventClass)イベントを有効にします。EventSettingsenable(String name)指定された名前のイベントを有効にします。PathgetDestination()記録が終わると記録データが書き込まれる宛先ファイル、または記録先が設定されていない場合はnullを返します。booleangetDumpOnExit()JVMが終了したときにこのレコーディングをディスクにダンプするかどうかを返します。DurationgetDuration()このレコーディングの所要時間を返します。時間が設定されていない場合はnullを返します。longgetId()このレコーディングの一意の識別子を返します。DurationgetMaxAge()破棄されるまでの間にデータがディスク・リポジトリに保持される期間を返します。longgetMaxSize()データがディスク・リポジトリに保持されなくなる最大サイズをバイト単位で返します。StringgetName()このレコーディングの名前を返します。Map<String,String>getSettings()このレコーディングで使用される設定を返します。longgetSize()ディスク・リポジトリ内のこのレコーディングの現在のサイズをバイト単位で返します。InstantgetStartTime()この記録が開始された時間を返します。RecordingStategetState()このレコーディングが現在あるRecordingStateを返します。InstantgetStopTime()この記録が停止した時間を返します。InputStreamgetStream(Instant start, Instant end)指定された間隔のデータ・ストリームを作成します。booleanisToDisk()この記録がディスクに行われている場合に返します。voidscheduleStart(Duration delay)遅延後にこの記録を開始します。voidsetDestination(Path destination)記録停止時にデータが書き込まれるロケーションを設定するか、データを自動的にダンプしない場合はnullを設定します。voidsetDumpOnExit(boolean dumpOnExit)JVMが終了したときにこの記録をディスクにダンプするかどうかを設定します。voidsetDuration(Duration duration)記録を停止するまでの時間を設定します。voidsetMaxAge(Duration maxAge)ディスク・リポジトリに保持するデータの範囲を決定します。voidsetMaxSize(long maxSize)ディスク・リポジトリに保持するデータの量を決定します。voidsetName(String name)"My Recording"など、人間が判読可能な名前を設定します。voidsetSettings(Map<String,String> settings)この記録のすべての設定を置き換えます。voidsetToDisk(boolean disk)この記録をディスクに連続的にフラッシュするか、またはデータをメモリー・バッファで使用できるものに制限するかを決定します。voidstart()この記録を開始します。booleanstop()この記録を停止します。
-
-
-
コンストラクタの詳細
-
記録
public Recording()
設定なしで記録を作成します。新しく作成された記録は
RecordingState.NEWになります。 記録を開始するには、start()を呼び出します。- 例外:
IllegalStateException- 商用機能がロックされていない場合、またはファイル・リポジトリを作成またはアクセスできない場合など、プラットフォームFlight Recorderを作成できなかった場合。SecurityException- セキュリティ・マネージャが使用され、FlightRecorderPermission "accessFlightRecorder"が設定されていない場合。
-
記録
public Recording(Configuration configuration)
構成からの設定でレコーディングを作成します。例,
新しく作成されたレコーディングはRecording r = new Recording(Configuration.getConfiguration("default"));RecordingState.NEWになります。 記録を開始するには、start()を呼び出します。- パラメータ:
configuration-nullではなく、使用する設定を含む構成- 例外:
IllegalStateException- 商用機能がロックされていない場合、またはファイル・リポジトリを作成またはアクセスできない場合など、プラットフォームFlight Recorderを作成できなかった場合。SecurityException- セキュリティ・マネージャが使用され、FlightRecorderPermission "accessFlightRecorder"が設定されていない場合。- 関連項目:
Configuration
-
-
メソッドの詳細
-
start
public void start()
この記録を開始します。このメソッドを呼び出す前に、記録されたデータを分析する際のより一貫した状態を保証するため、記録オプションとイベント設定を構成することをお勧めします。 構成が原子的に適用できるため、パフォーマンス上の利点もあります。
このメソッドが正常に呼び出されると、この記録の状態は
RUNNING状態になります。- 例外:
IllegalStateException- 記録が既に開始されているか、またはCLOSED状態になっている場合
-
scheduleStart
public void scheduleStart(Duration delay)
遅延後にこの記録を開始します。このメソッドが正常に呼び出されると、この記録の状態は
DELAYED状態になります。- パラメータ:
delay-nullではなく、この記録を開始する前に待機する時間- 例外:
IllegalStateException- 既に開始されているか、またはCLOSED状態にある場合
-
stop
public boolean stop()
この記録を停止します。記録が停止されると、記録は再開できません。 この記録に目的地がある場合、その目的地にデータが書き込まれ、記録が閉じられます。 記録が終了すると、データは使用できなくなります。
このメソッドが正常に呼び出されると、この記録の状態は
STOPPED状態になります。- 戻り値:
- 記録が停止した場合は
true、それ以外の場合はfalse - 例外:
IllegalStateException- 開始されていないか、既に停止している場合SecurityException- セキュリティ・マネージャが存在し、呼び出し元が宛先パスに書き込むFilePermissionを持っていない場合- 関連項目:
setDestination(Path)
-
getSettings
public Map<String,String> getSettings()
このレコーディングで使用される設定を返します。返されたマップを変更しても、この記録の設定は変更されません。
この記録に設定されていない場合は、空のマップが返されます。
- 戻り値:
nullではなく、記録設定
-
getSize
public long getSize()
ディスク・リポジトリ内のこのレコーディングの現在のサイズをバイト単位で返します。 バッファがフラッシュされると、サイズが更新されます。 記録がディスクに記録されていない場合、返されるのは常に0です。- 戻り値:
- 記録されたデータの量(バイト単位)、または記録がディスクでない場合は
0
-
getStopTime
public Instant getStopTime()
この記録が停止した時間を返します。- 戻り値:
- 時間、またはこの記録が停止していない場合は
null
-
getStartTime
public Instant getStartTime()
この記録が開始された時間を返します。- 戻り値:
- 時間、またはこの記録が開始されていない場合は
null
-
getMaxSize
public long getMaxSize()
データがディスク・リポジトリに保持されなくなる最大サイズをバイト単位で返します。- 戻り値:
- バイト単位の最大サイズ、または最大サイズが設定されていない場合は
0
-
getMaxAge
public Duration getMaxAge()
破棄されるまでの間にデータがディスク・リポジトリに保持される期間を返します。- 戻り値:
- 最大年齢が設定されていない場合は最大年齢、または
null
-
getName
public String getName()
このレコーディングの名前を返します。デフォルトでは、名前は記録IDと同じです。
- 戻り値:
nullではなく、記録名
-
setSettings
public void setSettings(Map<String,String> settings)
この記録のすべての設定を置き換えます。例,
既存の設定とマージするには。Map<String, String> settings = new HashMap<>(); settings.putAll(EventSettings.enabled("com.oracle.jdk.CPUSample").withPeriod(Duration.ofSeconds(2)).toMap()); settings.putAll(EventSettings.enabled(MyEvent.class).withThreshold(Duration.ofSeconds(2)).withoutStackTrace().toMap()); settings.put("com.oracle.jdk.ExecutionSample#period", "10 ms"); recording.setSettings(settings);Map<String, String> settings = recording.getSettings(); settings.putAll(additionalSettings)); recording.setSettings(settings);- パラメータ:
settings-nullではなく、設定する設定
-
getState
public RecordingState getState()
このレコーディングが現在あるRecordingStateを返します。- 戻り値:
nullではなく、記録状態- 関連項目:
RecordingState
-
close
public void close()
この記録に関連するすべてのデータを解放します。このメソッドが正常に呼び出されると、この記録の状態は
CLOSED状態になります。- 定義:
close、インタフェース:AutoCloseable- 定義:
close、インタフェース:Closeable
-
copy
public Recording copy(boolean stop)
このレコーディングのクローンを返しますが、新しいレコーディングIDと名前を返します。 クローンは、記録を停止せずにデータをダンプするのに便利です。 クローンが作成された後、コピーされるデータの量は、setMaxAge(Duration)とsetMaxSize(long)を使用して制限することができます。- パラメータ:
stop- 新しく作成したコピーをすぐに停止する必要がある場合はtrue、それ以外の場合はfalse- 戻り値:
nullではなく、記録コピー
-
dump
public void dump(Path destination) throws IOException
記録データをファイルに書き込みます。記録を開始する必要がありますが、必ずしも停止する必要はありません。
- パラメータ:
destination-nullではなく、記録データを書き込むべき場所- 例外:
IOException-pathに記録をコピーできない場合SecurityException- セキュリティ・マネージャが存在し、呼び出し元が宛先パスに書き込むFilePermissionを持っていない場合
-
isToDisk
public boolean isToDisk()
この記録がディスクに行われている場合に返します。値が設定されていない場合、
trueが返されます。- 戻り値:
- 記録がディスクの場合は
true、それ以外の場合はfalse
-
setMaxSize
public void setMaxSize(long maxSize)
ディスク・リポジトリに保持するデータの量を決定します。ディスクに保存されている記録データの量を無制限に増加させないために、最大サイズを使用して保持するデータ量を制限することができます。
maxSizeの制限を超えた場合、JVMは一番古いチャンクを削除して、より新しいチャンクのための空き領域を確保します。- パラメータ:
maxSize- 無限であれば0- 例外:
IllegalArgumentException-maxSizeが負の場合IllegalStateException- 記録がCLOSED状態にある場合
-
setMaxAge
public void setMaxAge(Duration maxAge)
ディスク・リポジトリに保持するデータの範囲を決定します。ディスクに保存されている記録データの量を無制限に増加させないために、
maxAgeを使用して保持するデータの量を制限することができます。maxAgeより古いディスクに保存されているデータは、Flight Recorderによって削除されます。- パラメータ:
maxAge- データを保持できる期間、または無限であればnull- 例外:
IllegalArgumentException-maxAgeが負の場合IllegalStateException- 記録が閉じている場合
-
setDestination
public void setDestination(Path destination) throws IOException
記録停止時にデータが書き込まれるロケーションを設定するか、データを自動的にダンプしない場合はnullを設定します。コピー先が設定されている場合、コピー先のパスにデータが正常にコピーされた後、この記録は自動的に閉じられます。
目的地が設定されていない場合、Flight Recorderはこの記録が終了するまでデータの記録を保持します。
dump(Path)を使用して、手動でファイルにデータを書き込みます。- パラメータ:
destination- パス、またはnullを指定してください。- 例外:
IllegalStateException- 記録がETOPPEDまたはCLOSED状態にある場合。SecurityException- セキュリティ・マネージャが存在し、呼び出し元がFilePermissionを読み取らない場合は、destinationファイルを書き込み、削除IOException- パスが書き込み可能でない場合
-
getDestination
public Path getDestination()
記録が終わると記録データが書き込まれる宛先ファイル、または記録先が設定されていない場合はnullを返します。- 戻り値:
- 宛先ファイル、または設定されていない場合は
null。
-
getId
public long getId()
このレコーディングの一意の識別子を返します。- 戻り値:
- 記録識別子
-
setName
public void setName(String name)
"My Recording"など、人間が判読可能な名前を設定します。- パラメータ:
name-nullではなく、記録名- 例外:
IllegalStateException- 記録が閉じている場合
-
setDumpOnExit
public void setDumpOnExit(boolean dumpOnExit)
JVMが終了したときにこの記録をディスクにダンプするかどうかを設定します。- パラメータ:
dumpOnExit- 記録をJVM出口にダンプする必要がある場合
-
getDumpOnExit
public boolean getDumpOnExit()
JVMが終了したときにこのレコーディングをディスクにダンプするかどうかを返します。dump on exitが設定されていない場合、
falseが返されます。- 戻り値:
- 終了時に記録をダンプする必要がある場合は
true、それ以外の場合はfalse。
-
setToDisk
public void setToDisk(boolean disk)
この記録をディスクに連続的にフラッシュするか、またはデータをメモリー・バッファで使用できるものに制限するかを決定します。- パラメータ:
disk- ディスクに記録を書き込む場合はtrue、イン・メモリーの場合はfalse
-
getStream
public InputStream getStream(Instant start, Instant end) throws IOException
指定された間隔のデータ・ストリームを作成します。 ストリームには、指定された範囲外のデータが含まれる場合があります。- パラメータ:
start- ストリームの開始時間、またはnullが記録の開始時刻からデータを取得end- ストリームの終了時間、または現時点までのデータを取得するnull。- 戻り値:
- 入力ストリーム、または
nullが指定されている場合は、その間隔でデータが使用可能になります。 - 例外:
IllegalArgumentException-endがstartより前に発生した場合IOException- ストリームを開くことができない場合
-
getDuration
public Duration getDuration()
このレコーディングの所要時間を返します。時間が設定されていない場合はnullを返します。この持続時間は、記録状態が
RecordingState.NEWの場合にのみ設定することができます。- 戻り値:
- 希望の記録時間、または時間が設定されていない場合は
null。
-
setDuration
public void setDuration(Duration duration)
記録を停止するまでの時間を設定します。デフォルトでは、記録時間は(
null)です。- パラメータ:
duration- 持続時間を使用しない場合は期間またはnull- 例外:
IllegalStateException- 記録が停止状態またはクローズ状態の場合
-
enable
public EventSettings enable(String name)
指定された名前のイベントを有効にします。同じクラスが異なるクラス・ローダーにロードされている場合に、同じ名前のイベントが複数ある場合、その名前に一致するすべてのイベントが有効になります。 特定のクラスを有効にするには、
enable(Class)メソッドまたはイベント・タイプIDのString表現を使用します。- パラメータ:
name-nullではなく、イベントの設定- 戻り値:
nullではなく、さらなる構成のためのイベント設定- 関連項目:
EventType
-
disable
public EventSettings disable(String name)
指定された名前のイベントを無効にします。同じクラスが異なるクラス・ローダーにロードされている場合に、同じ名前のイベントが複数ある場合、その名前に一致するすべてのイベントは無効になります。 特定のクラスを無効にするには、
disable(Class)メソッドまたはイベント・タイプIDのString表現を使用します。- パラメータ:
name-nullではなく、イベントの設定- 戻り値:
nullではなく、さらなる構成のためのイベント設定
-
enable
public EventSettings enable(Class<? extends Event> eventClass)
イベントを有効にします。- パラメータ:
eventClass-nullではなく、有効にするイベント- 戻り値:
nullではなく、さらなる構成のためのイベント設定- 例外:
IllegalArgumentException-eventClassが抽象クラスであるか、Eventのサブクラスでない場合
-
disable
public EventSettings disable(Class<? extends Event> eventClass)
イベントを無効にします。- パラメータ:
eventClass-nullではなく、有効にするイベント- 戻り値:
nullではなく、さらなる構成のためのイベント設定- 例外:
IllegalArgumentException-eventClassが抽象クラスであるか、Eventのサブクラスでない場合
-
-