Android モニターに含まれているメモリーモニターでメモリ使用状況を関している時、 同時にJava ヒープのスナップショットをAndroid固有のヒープ/CPU プロファイリング (HPROF)ファイルへダンプ出力できます。 HPROF ビューアは、クラス、各クラスのインスタンス、参照ツリーを表示して、メモリ使用状況の追跡とメモリリークの発見に役立ちます。 HPROF は、元々J2SEでサポートされているバイナリヒープダンプ形式です。
Java ヒープを表示によって以下のことが行えます:
しかし、グラフ内で何が起こっているかを追跡して、時間経過による変化をあなた自身が探す必要があります。
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 ヒープのスナップショットを調べるには:
メモリーモニター上のアイコン表示が から
へ変わった時、このファイルの準備が完了です。
Android Studio は、
package_yyyy.mm.dd_hh.mm.ss.hprof
という名前のヒープスナップショットを作成します。
このファイル名は、取得したアクティビティのパッケージ(もしくはプロジェクト)名、年、月、日、時間、分、秒が使用されます。
例、com.android.calc_2015.11.17_14.58.48.hprof
。
HPROF ビューが表示されます。
ヒープをダンプ出力した後、 Android Studioはそれを自動的に保存するので、後からでも閲覧することができます。
HPROF ビューア上でHPROFファイルを閲覧するには:
もしくはView > Tools Windows >Capturesの順に進みます。
Captures ウィンドウが表示されます。
HPROF ビューアが表示されます。
以下の手順は、典型的な作業の流れの概要を記載しています:
HPROF アナライザーを使って、リークしているアクティビティを検出して重複している文字列を見つけることができます。
HPROF アナライザーを使うには:
.hprof
ファイルをダブルクリックしてファイルをHPROF ビューアに表示します。 既定では、HPROF ビューアの右側に HPROF アナライザーが表示されます。
ヒープダンプデータを並び替えるには:
HPROF ビューア上で表示されているいくつかの項目については、そのソースコードがある位置まで直接ジャンプすることができます。
Java ソースを表示するには:
コードエディター上にそのソースコードが表示されます。
Android Studio上から、HPROF ファイルの名前変更、検索、削除ができます。 また、他の分析ツールで使用するために標準のHPROF 形式に変換することもできます。
Android Studio上からファイルの名前を変更しても、そのファイルは引き続き Captures ウィンドウに表示され続けます。
HPROF ファイルの名前を変更するには:
Android Studio が HPROF ファイルをディスク上で保存した場所を、素早く見つけることができます。
ディスク上にある HPROF ファイルを検索するには:
Android Studio は、OSのファイルブラウザを開いてファイルがある場所を表示します。
メモ: HPROF ファイルを移動させると、 Android Studio はCapturesウィンドウ上でそのファイルを表示しなくなります。 ファイルを表示するには、File > Openを使用してください。 また、ファイルの名前を変更したい場合は、OSのファイルブラウザからではなく、Capturesウィンドウから変更してください。
ヒープダンプファイルを削除するには:
Android Studio はCaptures ダイアログ上とディスク上から、ファイルを削除します。
HPROF ファイルを標準形式に変換できるので、ファイルをAndroid Studio外部の他分析ツールで使用することができます。
HPROF ファイルを変換するには:
Android Studio はあなたが指定した位置に バイナリ HPROF ファイルを作成します。