Versions Compared

    Key

    • This line was added.
    • This line was removed.
    • Formatting was changed.
    Comment: Published by Scroll Versions from this space and version 20.8
    sv-translation
    languageen

    This page describes how to configure and use object instance tracking for Java applications. For more information about why you may need to configure this, see Java Memory Thrash

    When object instance tracking is enabled, AppDynamics tracks the top 20 application and top 20 system (core Java) classes in the heap by default. You can also track specific classes.

    Enabling object instance tracking increases the amount of information captured by the agents, resulting in additional overhead. AppDynamics recommends using object instance tracking only while troubleshooting potential memory leaks. It does not normally need to be enabled during normal operation. 

    Info

    AppDynamics does not perform allocation tracking for core Java classes by default since doing so would add significant system overhead. However, it is possible to track core classes on a short-term basis (for example, while troubleshooting) or in pre-production environments. For more information, see Enabling Allocation Tracking for Core Java Classes.

    Permissions

    To enable or disable object instance tracking, you need the Configure Agent Properties permission.

    To configure the custom classes to track, you need the Configure Memory Monitoring permission.

    For information on AppDynamics Role Based Access Control, see Roles and Permissions.

    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. For Java 9 onwards JEP220 moved the capabilities needed by OIT to the Core Java runtime, meaning tools.jar is no longer necessary.
    • 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).
    Info

    jdk.jcmd is now no longer a required module for the custom runtime. However, it is required for the proper functioning of object instance tracking.

    Specify the Classpath

    When using the JDK runtime environment, set the classpath using the -classpath option for the application. For example:

    • On Windows:
      java -classpath <complete-path-to-tools.jar>;%CLASSPATH% -jar myApp.jar
    • On Unix:
      java -Xbootclasspath/a:<complete-path-to-tools.jar> -jar myApp.jar

    Enable Object Instance Tracking

    To start an object instance tracking session, follow these steps:

    1. In the left navigation pane, click Tiers & Nodes
    2. In the right pane, expand the tier node and open the Node Dashboard for the node on which you want to enable object instance tracking. 
    3. Click the Memory tab.
    4. Click the Object Instance Tracking subtab.
    5. Click ON.

    Tracked classes now appear in the Object Instance Tracking table. You can drill down to the tracked classes to see details. 

    Anchor
    track
    track
    Track Specific Classes

    For performance reasons, only the top 20 application classes and the top 20 system (core Java) classes in the heap are tracked automatically. 

    Use the Configure Custom Classes to Track option on the Object Instance Tracking subtab to specify instances of specific classes to track. Note that the classes you configure here are tracked only if their instance count is among the top 1000 instance counts in the JVM. 

    To track instances of custom classes:

    1. On the Object Instance Tracking tab, click Configure Custom Classes to Track.
    2. On the Instrumentation page that displays, click the tier you want to customize. 
    3. In the Object Instance Tracking section for the tier, click Add
      create new instance tracker
    4. Enter the fully-qualified class name of the class to track and click Save.

    The class you added is now tracked during object instance tracking sessions. 

    sv-translation
    languageja
    Appd tocbox
    Width370px

    On this page:

    Table of Contents
    maxLevel2
    minLevel2

    このトピックでは、オブジェクトインスタンス追跡の構成および使用方法について説明します。この構成が必要かどうかを確認したい場合は、「Java Memory Thrash」を参照してください。 

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

    オブジェクトインスタンス追跡を有効にすると、エージェントによって取得される情報量が増加し、オーバーヘッドが増えます。このためAppDynamicsでは、メモリリークの可能性をトラブルシューティングする間のみオブジェクトインスタンス追跡を使用することが推奨されます。通常のオペレーション時は、普通はこの機能を有効にする必要はありません。 

    Info

    AppDynamics では、システムのオーバーヘッドが急増するため、デフォルトでコア Java クラスの割り当て追跡は実行されません。しかし、短期間(例えばトラブルシューティング中)または実稼働前の環境でコアクラスを追跡することは可能です。詳細は、ナレッジベースの記事「コア Java クラスの割り当て追跡の有効化」を参照してください。

    権限

    オブジェクトインスタンスの追跡を有効化または無効化するには、Configure Agent Properties 権限が必要です。

    追跡するカスタムクラスを構成するには、Configure Memory Monitoring 権限が必要です。

    AppDynamics ロールベースのアクセス制御の詳細については、「Roles and Permissions」を参照してください。

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

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

    クラスパスの指定

    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テーブルに表示されます。追跡されたクラスをドリルダウンして詳細を見ることができます。 

    Anchor
    カスタムクラスの追跡
    カスタムクラスの追跡
    特定のクラスの追跡

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

    追跡対象として特定のクラスのインスタンスを指定する場合は、[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] をクリック。

    これで、追加したクラスがオブジェクトインスタンス追跡セッション中に追跡されるようになります。