プライマリ・コンテンツに移動
Java Platform, Standard Edition Java Flight Recorderコマンド・リファレンス
リリース10
E98510-01
目次へ移動
目次

前

2 診断コマンド・リファレンス

jcmdユーティリティで提供される診断コマンドを使用して、Java Flight Recorderを制御できます。

jcmdユーティリティは、実行中のJavaプロセスに診断コマンド要求を送信する際に使用されます。診断コマンドに関する情報は、helpパラメータを使用して入手できます。実行中のJavaプロセスのプロセスIDが必要です。

使用できる診断コマンドのリストを表示する場合は、コマンド名を含めないでください。たとえば、次のコマンドでは、IDが10568のプロセスのための診断コマンドが表示されます。

jcmd 10568 help

特定の診断コマンドの情報を表示するには、helpパラメータの後にコマンド名を指定します。たとえば、次のコマンドは、ID 5361のプロセスのJFR.start診断コマンドに関する情報を要求します。

jcmd 5361 help JFR.start

Java Flight Recorderでは次の診断コマンドが使用できます。

JFR.configure

フライト記録のパラメータを設定するには、jcmdユーティリティのJFR.configure診断コマンドを使用します。

表2-1は、JFR.configureコマンドのパラメータを示しています。すべてのパラメータはオプションです。パラメータを入力しなかった場合、現在の設定が表示されます。

表2-1 JFR.configureのパラメータ

パラメータ 説明 値の型 デフォルト

globalbuffercount

グローバル・バッファの数。memorysizeパラメータを変更して、グローバル・バッファの数を変更します。

Long

デフォルト値は、memorysizeパラメータの値によって決まります。

globalbuffersize

グローバル・バッファのサイズ(バイト単位)。memorysizeパラメータを変更して、グローバル・バッファのサイズを変更します。

Long

デフォルト値は、memorysizeパラメータの値によって決まります。

maxchunksize

各データ・チャンクの最大サイズ(バイト単位)

Long

12582912

memorysize

メモリー全体のサイズ(バイト単位)

Long

10485760

repositorypath

常設ファイルに書き込まれるまで記録を格納しておく場所のパス

String

デフォルトの場所は、オペレーティング・システムの一時ディレクトリです。Oracle SolarisおよびLinuxオペレーティング・システムの一時ディレクトリは/tmpです。Windowsでは、一時ディレクトリは環境変数TMPで指定されます。

stackdepth

スタック・トレースのスタックの深さ

Long

64

thread_buffer_size

各スレッドのローカル・バッファ・サイズ(バイト単位)。このパラメータをオーバーライドするとパフォーマンスが低下する可能性があるため、お薦めしません。

Long

8192

threadbufferstodisk

バッファ・スレッドがブロックされた場合にスレッド・バッファをディスクに直接書き込めるようにするフラグ

Boolean

false

samplethreads

スレッドのサンプリングをアクティブ化するフラグ

Boolean

true

例2-1 JFR.configureの例

次のコマンドは、Java Flight Recorderが記録をD:\jfr\recordingsに格納するように構成します。pidの値は、記録するJavaプロセスのプロセスIDです。

jcmd pid JFR.configure repositorypath=D:\jfr\recordings

JFR.start

フライト記録を開始するには、jcmdユーティリティのJFR.start診断コマンドを使用します。

表2-2は、JFR.startコマンドのパラメータを示しています。すべてのパラメータはオプションです。パラメータを入力しない場合は、デフォルト値を使用して記録が開始されます。

表2-2 JFR.startのパラメータ

パラメータ 説明 値の型 デフォルト

delay

記録を開始するまで待機する時間

整数の後に、秒のs、分のmまたは時間のhを指定します

0s

disk

記録中にディスクにデータを書き込むためのフラグ

Boolean

true

dumponexit

Java Virtual Machine (JVM)のシャットダウン時に記録をディスクに書き込むためのフラグ。これがtrueに設定され、filenameの値が入力されていない場合、記録はプロセスが開始されたディレクトリ内のファイルに書き込まれます。ファイル名は、プロセスID、記録IDおよび現在のタイムスタンプを含むシステム生成名(たとえばhotspot-pid-47496-id-1-2018_01_25_19_10_41.jfr)になります。

Boolean

false

duration

記録する時間

整数の後に、秒のs、分のmまたは時間のhを指定します

0s (無制限)

filename

記録が停止されるときに、記録が書き込まれるファイルの名前。パスを指定しない場合、ファイルは、プロセスが開始されたディレクトリに配置されます。ファイル名の例:

  • recording.jfr
  • /home/user/recordings/recording.jfr
  • c:\recordings\recording.jfr

String

デフォルト値なし

maxage

記録されたデータをディスクに保存する最大時間。このパラメータは、diskパラメータがtrueに設定されている場合にのみ有効です。

整数の後に、秒のs、分のmまたは時間のhを指定します

0s (無制限)

maxsize

ディスクに保存するデータの最大サイズ(次のいずれの接尾辞も使用されない場合はバイト単位)。

  • mまたはM: MB

  • gまたはG: GB

このパラメータは、diskパラメータがtrueに設定されている場合にのみ有効です。値は、JFR.configureコマンドで設定したmaxchunksizeパラメータの値以上にする必要があります。

Long

0 (最大サイズはなし)

name

記録の名前。名前を指定しないと名前が生成されます。生成された名前はコマンドのレスポンスに表示されるので、他のコマンドで使用できるようにメモしておきます。

String

デフォルトはシステム生成名です。

path-to-gc-roots

記録の終了時にガベージ・コレクション(GC)のルートへのパスを収集するためのフラグ。このフラグは、JDK 10で導入されました。

パス情報はメモリー・リークを探すのに役立ちますが、この収集には時間がかかります。メモリー・リークが疑われるアプリケーションの記録を開始する場合にのみ、このフラグをオンにします。settingsパラメータがprofileに設定されている場合、リークの可能性があるオブジェクトが割り当てられている場所からのスタック・トレースが、収集情報に含まれます。

Boolean

false

settings

記録するイベントを指定する設定ファイルの名前。複数のファイルを指定するには、名前をカンマ(,)で区切ります。ファイルがJRE_HOME/lib/jfrにない場合はパスを含めます。次のプロファイルはJDKのJRE_HOME/lib/jfrディレクトリに含まれています。

  • default.jfc: 低いオーバーヘッドで定義済の情報セットを収集するため、パフォーマンスに及ぼす影響は最小となり、継続的に実行される記録で使用できます。

  • profile.jfc: default.jfcプロファイルよりも多くのデータを提供しますが、オーバーヘッドもパフォーマンスに与える影響も大きくなります。より多くの情報が必要な場合に、この構成を短期間で使用します。

設定ファイル名の例:

  • profile
  • default
  • default.jfc
  • /home/user/settings/my-events.jfc,profile
  • c:\settings\custom.jfc

String

JRE_HOME/lib/jfr/default.jfc

例2-2 JFR.startの例

次のコマンドは、1分間実行する記録を開始し、profileという設定ファイルを使用して記録対象のイベントを指定し、d:\recordings\page-load.jfrという名前のファイルに記録を書き込みます。nameパラメータが指定されていないため、システム生成名が使用されます。pidの値は、記録するJavaプロセスのプロセスIDです。

jcmd pid JFR.start duration=1m settings=profile filename=d:\recordings\page-load.jfr

次のコマンドは、最大1時間データを保存するmonitor1hourという名前の記録を開始し、記録のサイズを500MBに制限します。pidの値は、記録するJavaプロセスのプロセスIDです。

jcmd pid JFR.start name=monitor1hour maxage=1h maxsize=500M

JFR.check

実行中のフライト記録に関する情報を表示するには、jcmdユーティリティのJFR.check診断コマンドを使用します。

表2-3は、JFR.checkコマンドのパラメータを示しています。すべてのパラメータはオプションです。パラメータを入力しない場合は、すべてのアクティブな記録の情報が表示されます。

表2-3 JFR.checkのパラメータ

パラメータ 説明 値の型 デフォルト

name

記録の名前

String

デフォルト値なし

verbose

記録のイベント設定を出力するためのフラグ

Boolean

false

例2-3 JFR.checkの例

次のコマンドは、Recording-1という名前の記録の情報を表示します。pidの値は、記録されているJavaプロセスのプロセスIDです。

jcmd pid JFR.check name=Recording-1

JFR.stop

フライト記録を停止するには、jcmdユーティリティのJFR.stop診断コマンドを使用します。

表2-4は、JFR.stopコマンドのパラメータを示しています。すべてのパラメータはオプションです。ただし、名前を入力しないと記録は停止されません。

表2-4 JFR.stopのパラメータ

パラメータ 説明 値の型 デフォルト

filename

記録が停止されるときに、記録が書き込まれるファイルの名前。パスを指定しない場合、ファイルは、プロセスが開始されたディレクトリに配置されます。ファイル名の例:

  • recording.jfr
  • /home/user/recordings/recording.jfr
  • c:\recordings\recording.jfr

String

デフォルト値なし

name

記録の名前

String

デフォルト値なし

例2-4 JFR.stopの例

次のコマンドは、debugrun1という名前の記録を停止し、プロセスが開始されたディレクトリ内のdebugrun1.jfrに記録を書き込みます。pidの値は、記録されているJavaプロセスのプロセスIDです。

jcmd pid JFR.stop name=debugrun1 filename=debugrun1.jfr

JFR.dump

フライト記録の実行中にデータをファイルに書き込むには、jcmdユーティリティのJFR.dump診断コマンドを使用します。

表2-5は、JFR.dumpコマンドのパラメータを示しています。nameパラメータとfilenameパラメータは必須です。データが書き込まれた後も記録の実行は継続します。

表2-5 JFR.dumpのパラメータ

パラメータ 説明 値の型 デフォルト

filename

(必須)

記録が書き込まれるファイルの名前。パスを指定しない場合、ファイルは、プロセスが開始されたディレクトリに配置されます。ファイル名の例:

  • recording.jfr
  • /home/user/recordings/recording.jfr
  • c:\recordings\recording.jfr

String

デフォルト値なし

name

(必須)

記録の名前

String

デフォルト値なし

path-to-gc-roots

記録データが出力されるときにガベージ・コレクション(GC)のルートのパスを収集するためのフラグ。このフラグは、JDK 10で導入されました。

この情報はメモリー・リークを探すのに役立ちますが、収集すると、アプリケーションが短期間一時停止する可能性があります。実行中のアプリケーションでメモリー・リークの疑いがある場合は、このフラグを使用して情報を収集すれば、別の記録を開始する必要がありません。

Boolean

false

例2-5 JFR.dumpの例

次のコマンドは、monitor1hourという名前の記録を/usr/testsamples/recordings/monitor1hour-halfway.jfrという名前のファイルに書き込みます。pidの値は、記録されているJavaプロセスのプロセスIDです。

jcmd pid JFR.dump name=monitor1hour filename=/usr/testsamples/recordings/monitor1hour-halfway.jfr

VM.unlock_commercial_features

すでに実行しているJavaプロセスの商用機能をロック解除するには、jcmdユーティリティのVM.unlock_commercial_features診断コマンドを使用します。

VM.unlock_commercial_featuresコマンドにはパラメータはありません。次の例は、商用機能をロック解除するコマンドです。pidの値はJavaプロセスのプロセスIDです。

jcmd pid VM.unlock_commercial_features

VM.check_commercial_features

すでに実行しているJavaプロセスで商用機能がロックされているかロック解除されているかを調べるには、jcmdユーティリティのVM.check_commercial_features診断コマンドを使用します。

VM.check_commercial_featuresコマンドにはパラメータはありません。次の例は、商用機能のステータスをチェックするコマンドです。pidの値はJavaプロセスのプロセスIDです。

jcmd pid VM.check_commercial_features