Javaのオブジェクトインスタンスの追跡

このページでは、Java アプリケーションのオブジェクトインスタンス追跡を構成して使用する方法について説明します。これを構成する必要がある理由の詳細については、「Java メモリスラッシング」を参照してください。

オブジェクトインスタンス追跡が有効な場合、Splunk AppDynamics ではデフォルトでヒープの上位 20 のアプリケーションと上位 20 のシステム(コア Java)クラスが追跡されます。特定のクラスを追跡することもできます。

オブジェクトインスタンス追跡を有効にすると、エージェントによって取得される情報量が増加し、オーバーヘッドが増えます。このため Splunk AppDynamics では、メモリリークの可能性をトラブルシューティングする間のみオブジェクトインスタンス追跡を使用することが推奨されます。通常のオペレーション時は、普通はこの機能を有効にする必要はありません。
重要: INLINEオブジェクトインスタンスのトラッキングを設定するには、Configure Agent Properties 権限が必要です。トラッキングするカスタムクラスを構成するには、Configure Memory Monitoring 権限が必要です。「Splunk AppDynamics のカスタムロールの管理」を参照してください。

オブジェクトインスタンス追跡の前提条件

  • オブジェクトインスタンスの追跡のプラットフォームサポートについては、「Java対応環境」を参照してください。
  • Java 9 より前の JVM の場合、オブジェクトインスタンスの追跡には tools.jar を使用します。アプリケーションが JDK で実行されている場合は、tools.jar がすでに利用可能になっています。JRE で実行している場合は、tools.jar<JRE_HOME>/lib/ext に追加して JVM を再起動する必要があります。tools.jar は <JAVA_HOME>/lib/tools.jar にあります。
  • libattach.so(Linux)または attach.dll(Windows)を JDK から JRE にコピーする必要がある場合があります。
  • JDK バージョンによっては、以下のように(他の -jar オプションとともに)クラスパスも指定しなければならない場合があります。
  • Java 9 以降の場合、JEP220 では OIT に必要な機能は Java Runtime コアに移動されているので、tools.jar は必要ありません。アプリケーションが JDK9+ で実行されている場合は、tools.jar がすでに利用可能になっています。JRE を使用して実行している場合は、jdk.jcmd を<JRE_HOME>/bin および/lib を使用して jlink を使用します。

クラスパスの指定

JDK ランタイム環境を使用している場合、アプリケーションに対して -classpath オプションを使用してクラスパスを設定します。例:
  • Windows:java -classpath <complete-path-to-tools.jar>;%CLASSPATH% -jar myApp.jar
  • Unix: java -Xbootclasspath/a:<complete-path-to-tools.jar> -jar myApp.jar

オブジェクトインスタンス追跡の有効化

オブジェクトインスタンス追跡セッションは、以下の手順で開始します。
  1. 左側のナビゲーションウィンドウで、Tiers & Nodes をクリックします。
  2. 右のペインで、ティアノードを展開し、オブジェクトインスタンス追跡を有効にするノードのノードダッシュボードを開く。
  3. [Memory] タブをクリックします。
  4. [Object Instance Tracking] サブタブをクリック。
  5. [ON] をクリックします。
これで追跡されたクラスがObject Instance Trackingテーブルに表示されます。
追跡されたクラスをドリルダウンして詳細を見ることができます。

特定のクラスの追跡

パフォーマンス上の理由から、ヒープの上位 20 のアプリケーションクラスと上位 20 のシステム(コア Java)クラスのみが自動的に追跡されます。

追跡対象として特定のクラスのインスタンスを指定する場合は、[Object Instance Tracking] サブタブの [Configure Custom Classes to Track] オプションを使用します。なお、ここで構成したクラスが追跡されるのは、インスタンスカウントが JVM の上位 1000 のインスタンスカウント内にある場合のみです。

カスタムクラスのインスタンスを追跡するには:

  1. [Object Instance Tracking] タブで、[Configure Custom Classes to Track] をクリックします。
  2. 表示される [Instrumentation] ページで、カスタマイズするティアをクリック。
  3. ティアの [Object Instance Tracking] セクションで、[Add] をクリック。
  4. 追跡するクラスの完全修飾クラス名を入力し、[Save] をクリック。
これで、追加したクラスがオブジェクトインスタンス追跡セッション中に追跡されるようになります。