tsalakh ain sus noam Huyah ol guf

勉強会のメモ。その他備忘録。参考にさせて頂いたサイトや資料はリンクさせて頂いていますが不都合があればご連絡ください。

【技術メモ】Eclipse Memory Analyzer

Eclipse Memory Analyzer

Eclipse Memory Analyzerとは?

おさえる基本事項 3 つ

  • Leak Suspects
    • リークが怪しまれる箇所を自動検出
  • Dominator tree
    • 大きいオブジェクトの一覧
  • Path to GC Roots

メニュー概要

起動後の選択画面

  • Leak Suspects Report
    • ヒープダンプから、リークの疑いを自動でチェック。
    • 残っているオブジェクトは何か、なぜGCされないのか
  • Component Report
    • 分析、オブジェクトのセット、ために、疑われる、メモリイシュー:
    • 重複文字列、空のコレクション、finalizer、弱参照、など
  • Re-open previously run reports
    • ZIP

アクション

  • Histgram
  • Dominator Tree
    • クラス毎のサイズと存在期間
  • Top Consumers(上位の消費者)
    • クラス/パッケージ毎のメモリ利用量
  • Duplicate Classes
    • 複数のクラスローダからロードされているクラス

レポート

OQL (Object Query Language)

  • Javaヒープの検索をするために利用できる問い合わせ言語
  • JAVAヒープから必要な情報を選択したり、フィルターしたりできる
  • JavaScrip埋め込み型言語ベース
  • 解説記事

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 占める