ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server トラブルシューティング集
Interstage

A.5.7 ヒープ分析機能

■ヒープ分析機能とは

  Javaヒープ領域でのオブジェクトの使用状況を参照する機能です。

  次の2つのデータからJavaヒープの分析を行います。

  1. オブジェクトヒストグラム

    Javaオブジェクトの使用状況を任意の二点間の差分にて示します。

    Javaオブジェクトの使用状況とは、現在のヒープにおけるJavaオブジェクトのヒストグラム(どのクラスのインスタンスが、何個存在し、何バイト占めている)を示すものです。

  2. ヒープダンプ

    現在のヒープダンプ(ヒープイメージ)を示します。

ヒープ分析時の留意事項

  オブジェクトヒストグラムやヒープダンプを採取した時、サーバ上のJava VMは一時的に停止状態になります。この停止状態の長さは、ヒープの状況(大きさや使用の複雑さ)に依存します。

  この間ヒープ分析の画面上のボタンを押すと応答の待ちが発生し、一時的に操作ができないことがあります。


ヒープ分析中の他パフォーマンスデータ採取の禁止

  ヒープ分析実行中にタブ操作により他のパフォーマンスデータ採取を行わないでください。

  他のパフォーマンスデータ採取処理の発生により、正しいヒープ分析の結果採取ができなくなります。

  特にメソッドサンプリングと並行しないようにしてください。


ヒープ分析操作中にjconsoleの出力ウィンドウが表示された場合

  ヒープ分析操作時、Java監視機能がエラーを検出するとjconsoleの出力ウィンドウを表示する場合があります。

  jconsoleの出力ウィンドウには、エラーを検出した際のException名、エラーメッセージ、Exception発生時のスタックトレースを表示します。

  メッセージの意味、必要な対処は“A.5.12 メッセージ”を参照してください。


■ヒープ分析機能の選択

  「ヒープ分析」のタブを選択(クリック)することでオブジェクトヒストグラムの画面が表示され、操作が可能な状態になります。

■ヒープ分析機能でできること

  ヒープ分析機能から操作できることは、次に示す通りです。

■オブジェクトヒストグラムの表示

  オブジェクトヒストグラムの表示は、次の手順で操作します。

  1. [開始]ボタンを押します。

      オブジェクトヒストグラムの採取を開始するとボタンの表示は次のように変更されます。

    ボタン名称

    開始前

    開始後

    [開始]ボタン

    活性状態(選択可能)

    グレー表示(選択不可能)

    [終了]ボタン

    グレー表示(選択不可能)

    活性状態(選択可能)

    [キャンセル]ボタン

    グレー表示(選択不可能)

    活性状態(選択可能)

    【オブジェクトヒストグラムの採取開始前】

    【オブジェクトヒストグラムの採取開始後】

      この時点では、表示領域にオブジェクトヒストグラムが表示されることはありません。

      また、以前採取したオブジェクトヒストグラムが表示されていた場合、クリアします。

      その後、ヒープ分析を開始した旨を伝えるメッセージが表示されます。

      オブジェクトヒストグラムの採取を開始するときに、監視対象のJavaプロセスでは、GCが実行されます。GCの実行がアプリケーションに大きな影響を与える場合は、この操作を行わないでください。

  2. [終了]ボタンを押します。

      オブジェクトヒストグラムの採取を終了するとボタンの表示は次のように変更されます。

    ボタン名称

    終了前

    終了後

    [開始]ボタン

    グレー表示(選択不可能)

    活性状態(選択可能)

    [終了]ボタン

    活性状態(選択可能)

    グレー表示(選択不可能)

    [キャンセル]ボタン

    活性状態(選択可能)

    グレー表示(選択不可能)

    【オブジェクトヒストグラムの採取終了前】

    【オブジェクトヒストグラムの採取終了後】

      [終了]ボタンが押されると表示領域にオブジェクトヒストグラムが表示されます。

    図A.3 オブジェクトヒストグラムの表示例

      なお、表示されたデータ項目の説明は、“◆画面表示されたデータ形式”を参照してください。

      オブジェクトヒストグラムの採取を終了するときに、監視対象のJavaプロセスでは、GCが実行されます。GCの実行がアプリケーションに大きな影響を与える場合は、この操作を行わないでください。

  3. オブジェクトヒストグラムの採取をキャンセルします。

      オブジェクトヒストグラムの採取をキャンセルすると採取のために実行されていたヒープの分析も終了します。

      オブジェクトヒストグラムの採取をキャンセルするには[キャンセル]ボタンを押します。

      オブジェクトヒストグラムの採取をキャンセルするとボタンの表示は次のように変更されます。

    ボタン名称

    キャンセル前

    キャンセル後

    [開始]ボタン

    グレー表示(選択不可能)

    活性状態(選択可能)

    [終了]ボタン

    活性状態(選択可能)

    グレー表示(選択不可能)

    [キャンセル]ボタン

    活性状態(選択可能)

    グレー表示(選択不可能)

    【オブジェクトヒストグラムの採取終了前】

    【オブジェクトヒストグラムの採取終了後】

      [キャンセル]ボタンが押されると表示領域に「キャンセルしました。」とメッセージが表示されます。

    オブジェクトヒストグラム採取中のjconsoleの再起動

      オブジェクトヒストグラムを開始したまま(オブジェクトヒストグラムの[終了]ボタンあるいは[キャンセル]ボタンを押さずに)、jconsoleを終了させた場合、オブジェクトヒストグラムの採取は継続されます。

      この状態でjconsoleを再度起動し、同一の測定対象コンテナに接続した場合、メソッドサンプリングは継続しているためボタンは、以下の状態になります。

      また表示域は、以下の状態になります。

      この状態から[終了]ボタンを押すことでjconsole終了前からの継続でオブジェクトヒストグラムの採取が完了し、オブジェクトヒストグラムの表示が行われます。また、[キャンセル]ボタンによりオブジェクトヒストグラムの採取をキャンセルすることができます。

■オブジェクトヒストグラムデータの保存

  現在表示されているオブジェクトヒストグラムの結果をCSV形式でファイルに保存します。

  保存したいオブジェクトヒストグラムが表示されている状態で、[CSV形式で保存する]ボタンを押します。

  [CSV形式で保存する]ボタンを押すと“保存”ダイアログボックスを表示します。

  以下の手順で保存を行います。

  1. データを保存するフォルダに移動

  2. “ファイル名:”に保存するファイル名を入力

  3. [保存]ボタンを押す

  保存したファイルの説明は、“◆ファイル保存されたCSV形式”を参照してください。

  [取消し]ボタン、あるいは[×]ボタンを押すと“保存”ダイアログボックスが閉じられ、保存処理は行われません。

  オブジェクトヒストグラムの結果が表示されていない状態で、[CSV形式で保存する]ボタンを押した場合、以下のメッセージが表示され、保存処理は行われません。


■ヒープダンプの採取

  現在のJavaヒープのイメージをヒープダンプといい、バイナリ形式でファイルに保存することができます。

  ヒープダンプの採取は、[ダンプを取得する]ボタンを押します。

  ヒープダンプを採取するときに、監視対象のJavaプロセスでは、GCが実行されます。GCの実行がアプリケーションに大きな影響を与える場合は、この操作を行わないでください。

  ヒープダンプは、Java監視機能の操作を行っているマシン上ではなく、測定対象としているコンテナが動作しているアプリケーションサーバ上に採取します。(Java監視機能の画面上で見ることはできません。Java監視機能が動作している端末上にファイル転送することもありません。)

  採取したファイルがどこに取られているかを[ダンプを取得する]ボタンの横の表示域に表示します。

  ヒープダンプファイルが保存される場所およびファイル名については、“◆ヒープダンプ”を参照してください。

  ヒープダンプの採取が何らかの原因により失敗した場合、[ダンプを取得する]ボタンの横の表示域には、「取得に失敗しました」のエラーメッセージが、詳細メッセージ(取得に失敗した原因を示す情報)と表示されます。

  また、詳細メッセージは、測定対象Javaプロセスの標準出力にも出力されます。

  採取したヒープダンプは、インストールされるJDK6に添付されるjhatコマンドで分析可能です。


  採取したヒープダンプのアクセス権

  採取したヒープダンプファイルのアクセス権は、ヒープダンプを採取した監視対象のプロセスの所有者のみに与えられます。


ヒープダンプ採取後のjconsoleの再起動

  ヒープダンプを採取した後(ファイル名を表示域に表示した状態で)、jconsoleを一旦終了させ、再度起動の後、同一のコンテナ(サーバ上のプロセス)に再接続した場合、サーバ上に終了前に採取したヒープダンプファイルが存在するとヒープダンプファイル名を表示した状態になります。

  ただし、サーバ上に終了前に採取したヒープダンプファイルが存在しない場合は、ヒープダンプファイル名は表示されません。


ヒープダンプ採取前のディスク容量確認

  ヒープダンプファイルの出力ファイルサイズが大きくなり、ヒープダンプの採取によるサーバ側のディスク容量を圧迫することがあります。

  ヒープダンプ採取の前には、出力先の空き容量が十分にあることを確認してください。