Interstage Application Serverにおける、Javaオブジェクトのリークによるjava.lang.OutOfMemoryErrorの調査方法について

Javaアプリケーションでのオブジェクトのリークにより、java.langOutOfMemoryErrorが発生した場合の調査方法を教えてください。
リークしているJavaオブジェクトを確実に特定する方法はありませんが、調査を支援するツールとして、
  • Qualyzer(V6~V9でサポート)
  • Java監視機能(V9.2.0~V9.3.0はEnterprise Editionのみ、V9.3.1 はEnterprise Edition/Standard-J Editionのみ、V10以降は全Editionでサポート)
  • jmapコマンド(V10以降でサポート)
  • -XX:+PrintClassHistogramオプションの指定(V10以降でサポート)

があります。これらを利用することで、Javaヒープ内に生存するオブジェクトのクラスごとのサイズ情報などが取得できます。
通常時とリーク発生時にこの情報を採取し、その2つを比較し生存するオブジェクトの傾向に違いがないかの確認をしてください。違いがある場合は、それを足がかりにアプリケーションの調査を実施してください。

各ツールの詳細は、下記マニュアルを参照してください。

・V10,V9,V8,V7,V6
  Interstage Application Server/Interstage Web Server トラブルシューティング集 V10
    付録A Javaツール機能

なお、上記以外の製品バージョンについては、該当するマニュアル箇所を参照してください。

・V10
  Interstage Application Server/Interstage Web Server チューニングガイド
    第8章 JDK/JREのチューニング
      8.5 チューニング/デバッグ技法
        8.5.4 クラスのインスタンス情報出力機能

製品・サービス区分 Interstage
製品・サービス情報
対象製品 Interstage Application Server
バージョン V10, V9, V8, V7, V6
プラットフォーム Windows, Solaris, Linux
アンサー種別 運用/保守
このページの先頭へ