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

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

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

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

Prerequisites for Object Instance Tracking

  • Review Java Supported Environments for information about platform support for object instance tracking.
  • For JVMs prior to Java 9, object instance tracking uses tools.jar. If your application runs with the JDK, tools.jar should be already available. If you are running with the JRE, you must add tools.jar to <JRE_HOME>/lib/ext and restart the JVM. You can find tools.jar in <JAVA_HOME>/lib/tools.jar.
  • In some cases, you might also need to copy libattach.so (Linux) or attach.dll (Windows) from your JDK to your JRE.
  • Depending on the JDK version, you may also need to specify the classpath as shown below (along with other -jar options).
  • For Java 9 or later, JEP220 moved the capabilities needed by OIT to the Core Java runtime, therefore tools.jar is no longer necessary. If your application runs with JDK9+, jdk.jcmd is already available. If you are running with the JRE, you must add jdk.jcmd to <JRE_HOME>/bin and <JRE_HOME>/lib using 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] をクリック。
これで、追加したクラスがオブジェクトインスタンス追跡セッション中に追跡されるようになります。