非Eclipse AndroidStudioでの MAT(Memory Analyzer Tool)

EclipseしかプラグインないのかなMAT。

eclipse_mat_install

スタンドアロンとかあったのか。

Eclipse Memory Analyzer Open Source Project

Eclipse_Memory_Analyzer

別窓MATで、GCが効かない強参照なリークを探す。

手順

1. hprof 書き出し
2. MATで読ませる
3. 解析結果を眺める

 

hprof 書き出し

対象アプリを起動後、戻るで終了。
DDMSでパッケージ選択してGC起こして Heap Allocated を確認後、hprofを書き出し。

Dalvik_Debug_Monitor

Save_HPROF_file_と_Dalvik_Debug_Monitor-2

 

MATで読ませる

「Unknown HPROF Version (JAVA PROFILE 1.0.3)」と怒られる。

形式をコンバートしてから読ませる。

$ hprof-conv jp.naver.line.android.hprof conved.hprof

Getting_Started_Wizard_と_Eclipse_Memory_Analyzer-2

Eclipse_Memory_Analyzer

 

解析結果を眺める

タブやリンクから探す。
正規表現を入力して見やすくとか「exclude WeakReference」を選択とか。

Eclipse_Memory_Analyzer-2

Eclipse_Memory_Analyzer 2

 

まとめ

そんなツールがあるけど、最終的には自分で見つけなければならない。

以下が、よくあるパターンだと。
たぶん、該当してるはず。

• References to Activity, Context, View, Drawable, ...
• Non-static inner classes (e.g. Runnable)
• Caches

資料を見て確認すべし。

Memory management for Android Apps 資料 PDF Google I/0 2012

けど、最近、GCのウザいログでなくなってねえ?


関連ワード:  AndroidAndroidStudio開発