MemoryAnalyzerの使い方
久しぶりの投稿ですが、最近はAndroidのアプリを作ってました。
ちょっと落ち着いたのでMemoryAnalyzerの使い方をまとめておきます。
AndroidはiPhoneと違ってGCがあるのでメモリを特に意識しなくてもいいって思ってましたが、変な作り方をするとOutOfMemoryが出てすぐにアプリケーションが落ちます。
そうなる前に、MemoryAnalyzerでメモリをチェックしましょう。
インストール
ここから該当OSのファイルをダウンロードして展開します。
http://www.eclipse.org/mat/downloads.php
Dumpファイルの取得
EclipseでDumpファイルを作成します。
最初にメモリを調査したいアプリケーションをデバックモードで起動します。
次に、DDMS画面のDevicesの中に調査したいアプリケーションが存在するので、選択した状態にします。
「Update Heap」という緑色のタンクアイコンをクリックします。
「Cause GC」ボタンを押すと、今のメモリ状況が表示されます。
アプリケーションの動作チェックとDumpファイルの保存
アプリケーションを動かしてみます。
今回は、ActivityAとActivityBをチェックしてみます。
ActivityAは、メニュー画面。ActivityBは、画像を扱うActivityです。
ActivityAからActivityBへ画面遷移し、ActivityBを終了させた後、ActivityAが表示されます。
ここで、先ほど押した「Cause GC」ボタンを数回押します。(3回程度)
「Dump HPROF file」という緑色のタンクに赤い矢印がついたアイコンをクリックします。
Dumpファイルを任意の場所に保存します。
Dumpファイルの変換
先ほど保存したDumpファイルを下記のコマンドで変換します。
hprof-conv com.android.sample.hprof sample.hprof
Dumpファイルの調査
MemoryAnalyzerを起動します。
File -> Open Heap Dump... から、変換したDumpファイルを読み込みます。
読み込んだら、ダイアログが表示されるので、「Leak Suspects Report」を選択します。
すると、グラフが表示されます。