Java Platform, Standard Editionトラブルシューティング・ガイド
目次      

2.17 jstatユーティリティ

jstatユーティリティは、Java HotSpot VMの組込みインストゥルメンテーションを使用して、実行中アプリケーションのパフォーマンスやリソース消費に関する情報を提供します。 このツールは、パフォーマンスの問題、特にヒープ・サイズ決定やガベージ・コレクションに関係する問題を診断するときに使用できます。 jstatユーティリティでは、特殊なオプション付きでVMを起動する必要はありません。 Java HotSpot VMの組込みインストゥルメンテーションはデフォルトで有効になります。 このユーティリティは、Oracleがサポートしているすべてのオペレーティング・システム・プラットフォームのJDKダウンロードに含まれています。


ノート:

FAT32ファイル・システム上では、インストゥルメンテーションにアクセスできません。

jstatユーティリティの詳細は、jstatコマンドのマニュアル・ページを参照してください。

jstatユーティリティは、仮想マシン識別子(VMID)を使用してターゲット・プロセスを識別します。 ドキュメントにはVMIDの構文が記載されていますが、それに必要な唯一のコンポーネントはローカル仮想マシン識別子(LVMID)です。 LVMIDは、(必ずではありませんが、)一般的にはターゲットJVMプロセスに対するオペレーティング・システムのPIDです。

jstatツールで提供されるデータは、Oracle SolarisおよびLinuxオペレーティング・システムのツールvmstatおよびiostatで提供されるデータに似ています。

データをグラフィカルに表現する場合は、visualgcツールを使用できます。 visualgcツールを参照してください。

例2-32では、jstatユーティリティがLVMID番号2834に接続し、250ミリ秒間隔で7個のサンプルを取る-gcutilオプションの使用例を示しています。

例2-32 jstatユーティリティによる世代コレクションのサンプル

$ jstat -gcutil 2834 250 7
  S0     S1     E      O      M     YGC     YGCT    FGC    FGCT     GCT   
  0.00  99.74  13.49   7.86  95.82      3    0.124     0    0.000    0.124
  0.00  99.74  13.49   7.86  95.82      3    0.124     0    0.000    0.124
  0.00  99.74  13.49   7.86  95.82      3    0.124     0    0.000    0.124
  0.00  99.74  13.49   7.86  95.82      3    0.124     0    0.000    0.124
  0.00  99.74  13.49   7.86  95.82      3    0.124     0    0.000    0.124
  0.00  99.74  13.49   7.86  95.82      3    0.124     0    0.000    0.124
  0.00  99.74  13.49   7.86  95.82      3    0.124     0    0.000    0.124

この例の出力は、若い世代のコレクションが3番目と4番目のサンプル間で行われたことを示しています。 コレクションには0.017秒かかっており、オブジェクトがeden領域(E)からOld領域(O)に昇格したため、old領域の使用率は46.56%から54.60%に増加しています。

例2-33では、 jstatユーティリティがLVMID番号2834に接続し、250ミリ秒間隔でサンプルを取り、出力を表示する-gcnewオプションの使用例を示しています。 さらに、-h3オプションを使用して、データが3行表示されるたびに列ヘッダーを表示します。

例2-33 jstatユーティリティによる若い世代のコレクションのサンプル

$ jstat -gcnew -h3 2834 250
S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT  
 192.0  192.0    0.0    0.0 15  15   96.0   1984.0    942.0    218    1.999
 192.0  192.0    0.0    0.0 15  15   96.0   1984.0   1024.8    218    1.999
 192.0  192.0    0.0    0.0 15  15   96.0   1984.0   1068.1    218    1.999
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT  
 192.0  192.0    0.0    0.0 15  15   96.0   1984.0   1109.0    218    1.999
 192.0  192.0    0.0  103.2  1  15   96.0   1984.0      0.0    219    2.019
 192.0  192.0    0.0  103.2  1  15   96.0   1984.0     71.6    219    2.019
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT  
 192.0  192.0    0.0  103.2  1  15   96.0   1984.0     73.7    219    2.019
 192.0  192.0    0.0  103.2  1  15   96.0   1984.0     78.0    219    2.019
 192.0  192.0    0.0  103.2  1  15   96.0   1984.0    116.1    219    2.019

この例では、ヘッダー文字列の繰返しが見られるほかにも、4番目と5番目のサンプル間で若い世代のコレクションが発生し、その継続時間が0.02秒だったことがわかります。 このコレクションでは、Survivor領域1の使用率(S1U)が適切なSurvivorサイズ(DSS)を超過するのに十分なライブ・データが検出されました。 この結果、オブジェクトは、Old世代(この出力には非表示)へ昇格され、殿堂入りしきい値(TT)が、15から1へ降格されました。

例2-34では、jstatユーティリティがLVMID番号21891に接続し、250ミリ秒間隔で3つのサンプルを取る-gcoldcapacityオプションの使用例を示しています。 -tオプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。

例2-34 jstatユーティリティによるOld世代の容量のサンプル

$ jstat -gcoldcapacity -t 21891 250 3
Timestamp    OGCMN     OGCMX       OGC        OC   YGC   FGC     FGCT     GCT
    150.1   1408.0   60544.0   11696.0   11696.0   194    80    2.874   3.799
    150.4   1408.0   60544.0   13820.0   13820.0   194    81    2.938   3.863
    150.7   1408.0   60544.0   13820.0   13820.0   194    81    2.938   3.863

Timestamp列には、ターゲットJVMの起動時からの経過時間が、秒単位で報告されています。 さらに、-gcoldcapacity出力では、割当て要求または昇格要求あるいはその両方を満たすためにヒープが拡張するごとに、Old世代の容量(OGC)とOld領域の容量(OC)とが増加していることがわかります。 OGCは、81番目の全世代の容量(FGC)後に、11696 KBから13820 KBへ増加しています。 この世代(および領域)の最大容量は、60544 Kバイト(OGCMX)なので、まだ拡張できる余裕が残されています。

目次      

Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved.