サイトのトップへ戻る

Android Studio ドキュメント 日本語訳

サイト内検索

HPROF ビューアとアナライザー

Android モニターに含まれているメモリーモニターでメモリ使用状況を関している時、 同時にJava ヒープのスナップショットをAndroid固有のヒープ/CPU プロファイリング (HPROF)ファイルへダンプ出力できます。 HPROF ビューアは、クラス、各クラスのインスタンス、参照ツリーを表示して、メモリ使用状況の追跡とメモリリークの発見に役立ちます。 HPROF は、元々J2SEでサポートされているバイナリヒープダンプ形式です。



なぜ Java ヒープを調べるのか?

Java ヒープを表示によって以下のことが行えます:

  • タイプごとに割り当てられたオブジェクト数のスナップショットを表示します。
  • 自然に発生した、もしくはあなたが発生させたガベージコレクションイベントの度にデータをサンプリングします。
  • どのタイプのオブジェクトがメモリーリークに関連しているのかを識別するのに役立ちます。

しかし、グラフ内で何が起こっているかを追跡して、時間経過による変化をあなた自身が探す必要があります。

HPROF アライザーは以下のような潜在的な問題を見つけます:

  • ガベージコレクションのルートから到達可能な、全ての破棄されたアクティビティインスタンス。
  • 対象のプログラムが値を繰り返す文字列を持っている場所。

ツリーの上側にいるのが支配ノードです。支配ノードを削除した場合、それが支配しているツリーの枝も削除しているので、メモリーを解放する可能性があります。



HPROF ビューアの表示内容を理解する

HPROF ビューアの表示は以下の図のようになります:

このツールは以下の情報を表示します。:

説明n
Class Name このメモリを占有している Java クラス。
Total Count 未処理インスタンスの総数。
Heap Count 選択したヒープ内のインスタンス数。
Sizeof インスタンスのサイズ (現状では、サイズが可変の場合は 0 になります)。
Shallow Size このヒープ内の全てのインスタンスの合計サイズ。
Retained Size このクラスの全インスタンスで占有しているメモリのサイズ。
Instance このクラスの特定のインスタンス。
Reference Tree 選択したインスタンスを指す参照と、その参照を指している参照。
Depth 任意のGCルート位置から選択したインスタンスへの、最短ホップ数。
Shallow Size このインスタンスのサイズ。
Dominating Size このインスタンスが占有しているメモリのサイズ。

Analyzer Tasksをクリックすると、 HPROF アナライザーが表示されます:

HPROF アナライザーを使って、リークしているアクティビティを検出して重複している文字列を見つけることができます。



Java ヒープのスナップショットを取得・表示する

Java ヒープのスナップショットを調べるには:

  1. 実行しているアプリをメモリーモニターに表示します
  2. Dump Java HeapDump Java Heap iconをクリックします。
  3. メモリーモニター上のアイコン表示が Dump Java Heap Start icon からDump Java Heap End iconへ変わった時、このファイルの準備が完了です。 Android Studio は、package_yyyy.mm.dd_hh.mm.ss.hprofという名前のヒープスナップショットを作成します。 このファイル名は、取得したアクティビティのパッケージ(もしくはプロジェクト)名、年、月、日、時間、分、秒が使用されます。 例、com.android.calc_2015.11.17_14.58.48.hprof

    HPROF ビューが表示されます。



保存した HPROF ファイルを見る

ヒープをダンプ出力した後、 Android Studioはそれを自動的に保存するので、後からでも閲覧することができます。

HPROF ビューア上でHPROFファイルを閲覧するには:

  1. メインウィンドウのCaptures icon をクリックします。
  2. もしくはView > Tools Windows >Capturesの順に進みます。

    Captures ウィンドウが表示されます。

  3. Heap Snapshot フォルダーを開きます。
  4. ファイルをダブルクリックすると、 HPROF ビューア上でそれが表示されます。
  5. HPROF ビューアが表示されます。

  6. 表示したいヒープメニューオプションを選びます:
    • App heap - 現在のアプリで使用されているヒープ。
    • Image heap - ディスク上で現在のアプリのコピーが紐付けられているメモリー。
    • Zygote heap - 共通して使用されるライブラリと実行クラスの集まり、および全てのアプリがフォークされているデータ。 端末が起動している間にzygote 用のスペースが作成され、このスペースが割り当てに使われることはありません。
  7. 表示したいビューメニュオプションを選びます:
    • Class List View
    • Package Tree View


HPROF ビューアでヒープダンプデータを深く調べる

以下の手順は、典型的な作業の流れの概要を記載しています:

  1. HPROF ビューアで、クラス名を選びます。
  2. クラスのインスタンスを選びます。
  3. 参照ツリーを調査します。
  4. 必要に応じて、項目を右クリックして Jump to sourceGo to instanceを行います。


HPROF アナライザーでヒープダンプデータを分析する

HPROF アナライザーを使って、リークしているアクティビティを検出して重複している文字列を見つけることができます。

HPROF アナライザーを使うには:

  1. Captures ウィンドウで、.hprof ファイルをダブルクリックしてファイルをHPROF ビューアに表示します。
  2. メインAndroid Studioウィンドウの右側にあるAnalyzer Tasksをクリックします。
  3. 既定では、HPROF ビューアの右側に HPROF アナライザーが表示されます。

  4. Analyzer Tasks の一覧内で、調べたい項目を選びます。
  5. Perform Analysis Perform Analysis iconをクリックします。
  6. Analysis Results内の項目を調べます。項目をクリックして、 それをHPROF ビューアに表示します。


ヒープダンプデータを並び替える

ヒープダンプデータを並び替えるには:

  • HPROF ビューアで、列の見出しをクリックして、表を昇順や降順で並び替えます。


Java ソースを表示する

HPROF ビューア上で表示されているいくつかの項目については、そのソースコードがある位置まで直接ジャンプすることができます。

Java ソースを表示するには:

  • HPROF ビューア上で、参照ツリー内のクラスやインスタンスや項目を右クリックして、Jump to Sourceを選びます。
  • コードエディター上にそのソースコードが表示されます。



HPROF ファイルを操作する

Android Studio上から、HPROF ファイルの名前変更、検索、削除ができます。 また、他の分析ツールで使用するために標準のHPROF 形式に変換することもできます。



HPROF ファイルの名前を変更する

Android Studio上からファイルの名前を変更しても、そのファイルは引き続き Captures ウィンドウに表示され続けます。

HPROF ファイルの名前を変更するには:

  1. Captures ウィンドウで、ファイルを右クリックしてRenameを選びます。
  2. ダイアログで、ファイル名を設定して OKをクリックします。


ディスク上にあるヒープダンプファイルを検索する

Android Studio が HPROF ファイルをディスク上で保存した場所を、素早く見つけることができます。

ディスク上にある HPROF ファイルを検索するには:

  • Captures ウィンドウで、ヒープスナップショットファイルを右クリックして Show もしくは Revealを選びます。
  • Android Studio は、OSのファイルブラウザを開いてファイルがある場所を表示します。

メモ: HPROF ファイルを移動させると、 Android Studio はCapturesウィンドウ上でそのファイルを表示しなくなります。 ファイルを表示するには、File > Openを使用してください。 また、ファイルの名前を変更したい場合は、OSのファイルブラウザからではなく、Capturesウィンドウから変更してください。



ヒープダンプファイルを削除する

ヒープダンプファイルを削除するには:

  • Captures ウィンドウ上で、スナップショットファイルを右クリックしてDeleteを選んでください。
  • Android Studio はCaptures ダイアログ上とディスク上から、ファイルを削除します。



ヒープダンプファイルを標準の HPROF 形式に変換する

HPROF ファイルを標準形式に変換できるので、ファイルをAndroid Studio外部の他分析ツールで使用することができます。

HPROF ファイルを変換するには:

  1. Captures ウィンドウで、ヒープスナップショットを右クリックしてExport to standard .hprofを選びます。
  2. Convert Android Java Heap Dump ダイアログで、ファイル名を設定してOKをクリックします。
  3. Android Studio はあなたが指定した位置に バイナリ HPROF ファイルを作成します。