AndroidStudio-HPROFファイル表示および分析ツール



Android Studio Hprof File Viewing



AndroidMonitorのメモリモニターツールを使用してAndroidStudioのメモリ使用量を監視すると、JavaヒープスナップショットをAndroid HPROFファイルにダンプできます(翻訳者注:標準のjava hprofファイル形式の標準とは異なります)。 HPROFビューアーは、クラス、クラスのインスタンス、およびインスタンスの参照ツリーを一覧表示して、メモリ使用量を追跡し、メモリリークの場所を見つけるのに役立ちます。 HPROFは元々、J2SEでサポートされているバイナリヒープダンプ形式でした。

(この記事の出典: http://www.jianshu.com/p/7d958959cf33 )。



Javaヒープをチェックする必要があるのはなぜですか?

Javaヒープには、次の情報が表示されます。

  • クラスごとのインスタンスオブジェクトのメモリ使用量を表示します
  • システムトリガーであるか、手動でトリガーするガベージコレクションイベントであるかに関係なく、各ガベージコレクションイベントのサンプルデータ
  • どのオブジェクトタイプがメモリリークを引き起こす可能性があるかを分析するのに役立ちます。

ただし、HPROFファイルには、特定の時点でのJavaヒープの使用状況のみが表示されます。特定の期間におけるJavaヒープの使用状況を理解する必要がある場合は、さまざまな時点で生成されたHPROFファイルを分析して、変更を見つける必要があります。 HPROF分析ツールは、次の2種類の問題を自動的に分析できます。



  • 破壊されたがリサイクルできないすべてのアクティビティのインスタンス
  • 定義された文字列を繰り返します。

HPROFファイル表示ツールの表示を理解する

HPROFファイル表示ツールのインターフェースは次のとおりです。

HPROFファイル表示ツール



このツールは、次の情報を表示します。

名前 説明
クラス名 クラス名
総数 このクラスのインスタンスの総数
ヒープ数 選択したヒープ内のこのクラスのインスタンスの数
のサイズ 単一のインスタンスが占めるスペースのサイズ(各インスタンスが異なる量のスペースを占める場合は0)
浅いサイズ ヒープ内のすべてのインスタンスサイズの合計(ヒープ数* Sizeof)
保持サイズ このクラスのすべてのインスタンスによって支配されるメモリの量
インスタンス 具体例
参照ツリー 選択したインスタンスへの参照、および参照への参照。
深さ GCルートノードから選択したインスタンスまでの最短パスの深さ
浅いサイズ 選択したインスタンスのサイズ
支配的なサイズ 選択したインスタンスが支配するメモリの量

アナライザータスクをクリックすると、HPROF分析ツールが表示されます。インターフェイスは、以下の右側のパネルに示されているとおりです。

HPROFファイル分析ツール

HPROF分析ツールを使用すると、リークされたアクティビティを検出し、重複した文字列を分析できます。

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

Javaヒープのスナップショットを表示するには、次の2つの手順を実行する必要があります。

  1. 実行中のプログラムをメモリモニターツールに表示する
  2. Javaヒープダンプボタンをクリックします
    ダンプが成功すると、このメモリモニターに表示されるアイコンが変わります。 Android Studioで作成されたHPROFファイル名の形式はpackage_yyyy.mm.dd_hh.mm.ss.hprofで、com.android.calc_2015.11.17_14.58.48.hprofのように、パッケージ名とダンプの時刻を使用して名前が付けられます。 。

保存したHPROFファイルを表示する

ヒープダンプ後、Android StudioはHPROFファイルを自動的に保存して、再度表示できるようにします。 HPROFビューアでHPROFファイルを表示する手順は次のとおりです。

  1. メインウィンドウの[キャプチャ]ボタンをクリックするか、[表示]> [ツール]ウィンドウ> [キャプチャ]を選択して[キャプチャ]ウィンドウを開きます。
  2. ヒープスナップショットフォルダーを開きます
  3. 表示するHPROFファイルをダブルクリックして、HPROFファイル表示ツールのインターフェイスを開きます。
  4. 表示するヒープを選択します
    • アプリヒープ-現在のアプリで使用されているヒープ
    • イメージヒープ-ハードディスク上の現在のアプリのメモリマッピング
    • Zygoteヒープ-zygoteのコピー時に継承されるライブラリ、ランタイムクラス、および定数のデータセット。接合子スペースデバイスは起動時に作成され、ここにスペースを割り当てることはありません。
  5. 表示する表示オプションを選択します。
    • クラスリストビュー
    • パッケージツリービュー

HPROFファイル表示ツールでデータを分析する

次の手順は、一般的なワークフローです。

  1. HPROFファイル表示ツールでクラス名を選択します
  2. このクラスのインスタンスを選択します
  3. 参照ツリーを表示する
  4. 必要に応じて、ツリーエントリを右クリックして、ソースまたはインスタンスにジャンプできます。

HPROFファイル分析ツールでデータを分析します

HPROF分析ツールを使用すると、リークされたアクティビティを検出し、重複した文字列を分析できます。 HPROFファイル分析ツールを使用するための標準的な手順は次のとおりです。

  1. [キャプチャ]ウィンドウを開き、表示するHPROFファイルをダブルクリックして、HPROFファイル表示ツールのインターフェイスを開きます。
  2. AndroidStudioのメインウィンドウの右側にある[アナライザータスク]をクリックします。デフォルトのHPROFファイル分析ツールがHPROFファイル表示ツールの右側に表示されます。
  3. アナライザータスクリストで分析するオプションを選択します
  4. ボタンをクリックして分析を開始します
  5. 分析の結果を表示するには、結果のエントリをクリックして、HPROFファイル分析ツールで詳細を表示します。

データの並べ替え

HPROFファイルビューアで、テーブルの上部をクリックしてテーブルを作成します 中程度のデータ 昇順または順序付け。

Javaソースコードを表示する

HPROFファイル表示ツールに表示される項目の一部は、ソースコードに直接ジャンプできます。プロジェクトを右クリックし、[ソースにジャンプ]をクリックします。 コードエディタ ソースコードを開きます。

HPROFファイル関連の操作

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

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

Android Studioで名前が変更されたHPROFファイルは、引き続き[キャプチャ]ウィンドウに表示されます。
[キャプチャ]ウィンドウのHPROFファイルリストで操作するファイルを選択し、[名前の変更]を右クリックします。

HPROFファイルを見つけます

AndroidStudioがHPROFファイルを保存する場所をすばやく見つけることができます。 [キャプチャ]ウィンドウの[HPROFファイル]リストで、操作するファイルを選択し、エクスプローラーで[表示]を右クリックすると、AndroidStudioによってシステムが開きます。 ファイルブラウザ ファイルが保存されている場所に移動します。

注:Android Studioは、他のパスに移動されたHPROFファイルを[キャプチャ]ウィンドウに表示できません。表示したい場合は、[ファイル]> [開く]を使用してください。同じ理由で、システムのファイルブラウザを使用してHPROFファイルの名前を変更しないでください。

HPROFファイルを削除します

[キャプチャ]ウィンドウの[HPROFファイル]リストで、操作するファイルを選択し、[削除]を右クリックすると、AndroidStudioによって[キャプチャ]ウィンドウとハードディスクからファイルが削除されます。

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

標準のHPROFファイルに変換した後、AndroidStudio以外の分析ツールを使用して分析できます。 [キャプチャ]ウィンドウの[HPROFファイル]リストで、操作するファイルを選択し、[標準の.hprofにエクスポート]を右クリックします。