メモリリークの可能性の識別

カスタムメモリ構造のメモリ使用パターンのモニタリングを始めます。急激に増加に傾いている場合、オブジェクトは自動的にリークの可能性があるオブジェクトとしてマークされます。Memory Leakダッシュボードに表示される情報は次のとおりです。

  • Heap & Garbage Collection:ヒープおよびガベージコレクションのメトリックを提供します。
  • Automatic Leak Detection:JVM セッション内のすべてのマップおよびコレクションライブラリのメモリ使用データを提供します。
  • Object Instance Tracking:ヒープ内の上位 20 のアプリケーションクラスと上位 20 のシステム(コア Java)クラスのトラッキングデータを提供します。
  • Custom Memory Structures:特定のクラスを追跡し、Java コレクションではないカスタムキャッシュまたはその他の構造をモニターできます。

Custom Memory Structuresダッシュボードに表示される情報は次のとおりです。

    • Class:モニターされているクラスまたはコレクションの名前。
    • Deep Size (bytes):構造に対して使用できるメモリの上限。ディープサイズはJVMの再起動の前後をまたいでトレースされる
    • % of Current Used Heap:動的割り当てに使用できるメモリの割合。
    • Potentially Leaking:リークの可能性があるコレクションは赤でマークされる。リークの可能性があるオブジェクトに対して診断セッションを開始することが推奨される。
    • JVM Start Time:カスタムメモリ構造は JVM の再起動の前後をまたいで追跡される。
    • Status:診断セッションがオブジェクトで開始された場合に示される。
    • Deep Size:急激に増加に傾いている場合はメモリリークの可能性がある。

リークの可能性があるコレクションが識別されたら、診断セッションを開始します。

メモリリークの診断

[Custom Memory Structures] ダッシュボードで、モニターするクラス名を選択し、[Drill Down.] をクリックします。

リークしているコレクションの分離

コレクションがアプリケーションのどの部分に属しているかを特定するには、Content Inspectionを使用します。これにより、特定のメモリ構造の全エレメントのヒストグラムをモニタリングできます。オブジェクトに対して診断セッションを開始し、それから以下の手順に従います。

  1. Content Inspectionタブを選択。
  2. [Start Content Summary Capture Session] をクリックします。
  3. セッション期間を入力。データ生成に少なくとも1-2分を割り当てる。
  4. [Refresh] をクリックし、セッションデータを取得する。
  5. スナップショットをクリックして特定のコンテンツサマリキャプチャセッションに関する詳細を表示。

アクセストラッキング

Access Trackingを使用して、メモリ構造にアクセスする実際のコードパスとビジネストランザクションを表示します。オブジェクトに対して診断セッションを開始し、それから以下の手順に従います。

  1. Access Trackingタブを選択。
  2. Start Access Tracking Session を選択します。
  3. セッション期間を入力。データ生成に少なくとも1-2分を割り当てる。
  4. [Refresh] をクリックし、セッションデータを取得する。
  5. スナップショットをクリックして特定のコンテンツサマリキャプチャセッションに関する詳細を表示。