【技術メモ】Eclipse Memory Analyzer
Eclipse Memory Analyzer
Eclipse Memory Analyzerとは?
おさえる基本事項 3 つ
メニュー概要
起動後の選択画面
- Leak Suspects Report
- ヒープダンプから、リークの疑いを自動でチェック。
- 残っているオブジェクトは何か、なぜGCされないのか
- Component Report
- 分析、オブジェクトのセット、ために、疑われる、メモリイシュー:
- 重複文字列、空のコレクション、finalizer、弱参照、など
- Re-open previously run reports
- ZIP
アクション
- Histgram
- クラスごとのインスタンス数
- Dominator Tree
- クラス毎のサイズと存在期間
- Top Consumers(上位の消費者)
- クラス/パッケージ毎のメモリ利用量
- Duplicate Classes
- 複数のクラスローダからロードされているクラス
レポート
OQL (Object Query Language)
Histogramビュー
- Class Name:ソート可能なすべてのクラスのリスト
- Objects:インスタンス数
- Shallow Heap:全インスタンスで使用しているメモリ総量
- Retained Heap:参照しているオブジェクトを含めたメモリ総量
ヒントとコツ
- ダンプファイルと同じディレクトリにできたファイルを渡すと、別のPCでのリロードの時間が短縮される
- ダンプのサイズが、ダンプ生成時のGCと相関しない場合、「Overview (概要)」タブの「Unreachable Objects Histogram (到達不能オブジェクトのヒストグラム)」リンクを参照してください。Java ヒープに、Memory Analyzer によって削除された大量のガーベッジが含まれていた可能性があります。
- 一度に複数のダンプをロードして比較することができます。それには、新しいほうのダンプのヒストグラムを開き、上部にある「Compare (比較)」ボタンをクリックして、基準とするダンプを選択します。
MATでヒープダンプを比較
- メモリリークのデバッグには、2つの異なるタイミングの状態を比較するのが役立つことがある。そのためには、別々のHPROFファイルが必要だ。 (hrpof-convを使って変換することを忘れない様に)
- 2つのヒープダンプをMATで比較する方法は、少しややこしい。
- 最初のHPROFファイルを開く (File - Open Heap Dump)
- Histogramビューを開く
- Navigation Historyビュー(もし表示されていない場合はWindow - Navigation History)で、histogramを右クリックして、Add to Compare Basketを選択する
- 2つめのHPROFファイルを開いて、2と3を繰り返す
- Compare Basketビューに移動して、Compare the Resultsをクリックする。(ビューの右上にある赤い!アイコン)
読むときに調べた英単語
単語 | 意味 |
---|---|
suspect | 疑う |
dominate | 支配する |
remainder | 余り(その他) |
shallow | 浅い |
expensive | コストのかかる |
retain | 保持 |
immediate | 即座 |
occupy | 占める |