IBM i - Java仮想マシンの分析
Java仮想マシンの分析(ANZJVM)コマンドは、指定したジョブのJava仮想マシン(JVM)に関する情報を収集します。
一連のJVM情報は、コマンドが実行されるとすぐに収集されます。この収集されたJVMデータをスナップショットと言います。
指定した時間に後から別のスナップショットが収集されます。
JVMのスナップショットを取得して、このデータを後から取得したスナップショットと比較すれば、データを解析してオブジェクト・リークを検出できます。
オブジェクト・リークを検出するには、ヒープ内の各クラスのインスタンス数を調べます。インスタンスの数が異常に多いクラスは、リークの可能性があります。
また、ガベージ・コレクション・ヒープの2つのコピー間で各クラスのインスタンス数に変化がある場合も注意する必要があります。クラスのインスタンス数が増え続ける場合、そのクラスはリークの可能性があります。
2つのコピー間の間隔が長いほど、オブジェクトが実際にリークしている可能性が高くなります。
間隔の長い一連の時間に対してANZJVMを実行すると、何がリークしているかを確実に診断できます。
情報は、プリンター・デバイス・ファイルQSYSPRTを使用してダンプされます。
QSYSPRTファイルのユーザー・データはANZJVMです。
ダンプには、JVMヒープに関するフォーマットされた情報が含まれます。
クラス名、クラスごとのアクティブなオブジェクトの数、各クラスのロードに使用されるクラス・ローダーなどの詳細があります。
ANZJVMコマンドを実行する場合、ガベージ・コレクション・サイクルを強制するかどうか、強制する場合は、各パスの前にガベージ・コレクション・サイクルを強制的に行うかどうかを指定するパラメータがあります。
また、情報を保管する方法とパス同士の間隔時間に関するパラメータもあります。
以下のANZJVMコマンドの例では、ユーザー名QOTHPRDOWNとジョブ番号099112のQJVACMDSRCというジョブについて、JVMの2つのコピーを60秒おきに収集します。
ANZJVM JOB (099112/ QOTHPRDOWN /QJVACMDSRV)