Interstage Application Server/Interstage Web Server トラブルシューティング集 |
目次
索引
![]() ![]() |
付録A Javaツール機能 |
jheapは、実行中のJavaプログラムのヒープ使用状況を出力するツールです。
製品添付のJDK/JRE 1.4、5.0
FJVMがサポートする次のGC処理が動作対象のGC処理です。
上記以外のGC処理に対しては、jheapは動作しません。
FJVMがサポートするGC処理の詳細は、“チューニングガイド”の“JDK/JREのチューニング”の“FJVMでサポートされるガーベジコレクション処理”を参照してください。
jheapは、コマンドプロンプトから起動するコマンドで、モジュール名はjheapです。
格納先は次のとおりです。
以下、製品を“C:\Interstage”にインストールした場合を想定しています。
jheap [-i interval] [-c count] [-t] pid
pidで指定した動作中のJavaプログラムのヒープ使用状況を一定時間の間隔で標準出力に出力します。
pidには、プロセスIDを指定します。
Windows(R)の場合は、プロセスIDは“タスクマネージャ”で確認することができます。
また、Interstage管理コンソールのIJServerモニタ画面で、各ワークユニットのプロセスIDを参照することができます。
-i interval |
測定の間隔を秒単位で指定します。省略可能です。 |
-c count |
出力する回数を指定します。省略可能です。 |
-t |
タイムスタンプを出力する場合に指定します。省略可能です。 |
pid |
プロセスIDを指定します。 |
プロセスID以外の、-i, -c ,-t オプションの指定の順序は任意です。
また、-i , -c オプションを複数回指定した場合は、最後に指定したオプションが有効となります。
“-i”および“-c”オプションには、正の整数(1〜2147483647)を指定することができます。
そのとき、オプションに指定された文字列を先頭から解析し、数字以外の文字が指定された時点で解析を終了します。たとえば、“12.345”は“12”と解釈します。
次のステップで、jheapを起動してください。
コマンド起動時の例: ---------------------------------------------------------------------- % 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(R)ではタスクマネージャやパフォーマンスモニタ、Solarisでは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プログラムで使用するクラスの種類が多かったり、クラスのサイズが大きかったりする場合に不足する場合があります。
記録された値を元に、ヒープ域の使用状況と実際の処理の経過時間とを比較し、繁忙時のヒープの使用状況を確認できます。もし結果がヒープ域の最大値に近接した値であれば、ヒープ域の最大値を拡張し、余裕を持たせる必要があります。
目次
索引
![]() ![]() |