Interstage Application Server トラブルシューティング集 |
目次
索引
![]() ![]() |
付録B Javaツール機能 |
jheapは、実行中のJavaプログラムのヒープ使用状況を出力するツールです。
jheapは、コマンドプロンプトから起動するコマンドで、モジュール名はjheapです。
格納先は次のとおりです。
※製品を“C:\Interstage”にインストールした場合
jheapが格納されたディレクトリを環境変数PATHに設定します。
もしくはPATHの設定されているディレクトリにjheapを格納します。
jheap [-i interval] [-c count] [-t] pid
pidで指定した動作中のJavaプログラムのヒープ使用状況を一定時間の間隔で標準出力に出力します。
pidには、プロセスIDを指定します。プロセスIDはWindowsの“タスクマネージャ”で参照可能です。また、Interstage管理コンソールのIJServerモニタ画面で、各ワークユニットのプロセスIDを参照可能です。
-i interval |
測定の間隔を秒単位で指定します。省略可能です。 |
-c count |
出力する回数を指定します。省略可能です。 |
-t |
タイムスタンプを出力する場合に指定します。省略可能です。 |
pid |
プロセスIDを指定します。 |
プロセスID以外の、-i, -c ,-t オプションの指定の順序は任意です。
また、-i , -c オプションを複数回指定した場合は、最後に指定したオプションが有効となります。
“-i”および“-c”オプションには、正の整数(1〜2147483647)を指定することができます。
そのとき、オプションに指定された文字列を先頭から解析し、数字以外の文字が指定された時点で解析を終了します。たとえば、“12.345”は“12”と解釈します。
---------------------------------------------------------------------- % jheap 123 <new> [used: 847728] [free: 1511568] [total: 2359296] <old> [used: 33699152] [free: 2820784] [total: 36519936] <perm> [used: 6460336] [free: 93264] [total: 6553600] <new> [used: 847728] [free: 1511568] [total: 2359296] <old> [used: 33699152] [free: 2820784] [total: 36519936] <perm> [used: 6460336] [free: 93264] [total: 6553600] <new> [used: 847728] [free: 1511568] [total: 2359296] <old> [used: 33699152] [free: 2820784] [total: 36519936] <perm> [used: 6460336] [free: 93264] [total: 6553600] ・・・ ----------------------------------------------------------------------
Javaアプリケーションのメモリ使用状況には以下があります。
プロセス全体のメモリ使用状況は、OSの機能(Windowsではタスクマネージャやパフォーマンスモニタ、Solaris OEではpmap/prstatなど)で把握することができます。
一方、Javaヒープの使用状況は、以下で確認することができますが、プログラム起動時に指定するか、あらかじめソースコードに仕込む必要があります。
jheapは、JavaプログラムのJavaヒープの使用状況を、プログラムの起動後に調査することができます。
Javaヒープは、通常のオプションでは、New世代領域、Old世代領域、Permanent世代領域の3つに大別されます。jheapでは、以下のように、それぞれの領域の使用状況を検出することができます。
---------------------------------------------------------------------- <new> [used: 847728] [free: 1511568] [total: 2359296] <old> [used: 33699152] [free: 2820784] [total: 36519936] <perm> [used: 6460336] [free: 93264] [total: 6553600] used :現在の使用量 (byte) free :現在の空き容量(byte) total :現在の領域長 (byte) ----------------------------------------------------------------------
これら3つの領域は、newなどによるメモリ確保、ガベージコレクションなどにより、増減します。totalは、現在メモリがマッピングされている量であり、最大値ではないことに注意が必要です。
new + oldで、-verbose:gcで表示される情報に相当します。
New世代領域、Old世代領域ともに、Javaクラスのインスタンスが格納される領域です。
New世代領域には、newされてからの時間が比較的短いインスタンスが格納されます。
Old世代領域には、newされてからの時間が比較的長いインスタンスがガベージコレクションにより、New世代領域から移動されます。
Permanent世代領域は、標準のJavaの機能で測定することはできませんが、Javaのクラスや定数などの不変な情報が格納される領域です。Javaプログラムで使用するクラスの種類が多かったり、クラスのサイズが大きかったりする場合に不足する場合があります。
記録された値を元に、ヒープ域の使用状況と実際の処理の経過時間とを比較し、繁忙時のヒープの使用状況を確認できます。もし結果がヒープ域の最大値に近接した値であれば、ヒープ域の最大値を拡張し、余裕を持たせる必要があります。
製品添付のJDK/JRE 1.3.1_12、1.4.2_05のHotSpot Client VM/FJVM
-XX:+UseTrainGC、-XX:+UseParallelGC、-XX:+UseConcMarkSweepGCなどのオプションを使用して、ガベージコレクションのアルゴリズムを変更した場合は動作しません。
目次
索引
![]() ![]() |