2011-06-26 7 views
3

Android用の「ライブ」メモリプロファイラツール(XCodeのInstrumentsに似ています)はありますか?ほとんどの場合、メモリプロファイリングを検索し、メモリアナライザツール(これは素晴らしい)につながりますが、アプリケーションのライフサイクルでどのクラスがメモリを消費(および解放)するかを動的に表示できるツールを非常に高く評価します。実行中です。Android用の「ライブ」メモリ解析ツール

注:私はではありません。は、Android用のメモリプロファイリングツールを探しています(メモリアナライザツールは私にとってはうまく機能します)。私が遭遇したすべてのメソッド/ツールは、ヒープのスナップショットを取ってファイルに保存します。私はヒープのどの部分がさまざまなオブジェクトによって使用されているかについてのライブカウンタ/更新を提供するツールを探していますが、これは2番目または1秒後に更新されます。 Androidではこれが可能ではない可能性があります。しかし、私は確かに答えを見つけていません。

+1

DDMSはヒープとアロケーションのトラッカーを提供しています。これらとMATはほとんど私が見つけることができます。あなたのポストを更新してください。それ以上のものを見つけるのですか? – Asahi

+0

私の答えはこちらhttp://stackoverflow.com/questions/9565453/android-memory-analysis/9679360#9679360 – Sameer

答えて

1

here約35分で、あなたのアプリをプロファイルする方法を示しています。あなたがそれを「ライブ」できるかどうかはわかりません。


詳しい情報from this post on milk.com

があるため、これを試していない アンドロイド1.6とないように注意してください、あなたは生きてそれを行うことができますが、ヒープデータを生成することができるように使用される場合:

ゲットデバイス上のコマンドシェル

$ adb shell 

idコマンドを使用してrootとして実行していることを確認できます。応答はuid = 0(root)gid = 0(root)のようになります。そうでない場合は、suと入力してもう一度お試しください。 suが失敗した場合、あなたは運がない。

次に、ターゲットディレクトリが存在することを確認:ターゲット・プロセスにSIGUSR1を送り、あなたのアプリケーションのプロセスIDを決定する

# mkdir /data/misc 
# chmod 777 /data/misc 

利用PSまたはDDMS:

# kill -10 <pid> 

信号をGCの後にヒープ・ダンプが続きます(完全に正確で、実際には同時に発生しますが、ヒープ・ダンプの結果はGC後の状態を反映します)。これには数秒かかることがあるので、完了時を知るためにGCログメッセージを監視する必要があります。

次へ:

# ls /data/misc/heap-dump* 
# exit 

使用LSは、デバイスのコマンドシェルを終了するには終了し、その後、ファイル名を確認します。

/data/misc/heap-dump-BLAH-BLAH.hprofと.hprof-headという2つの出力ファイルがあります。ここで、BLAHは、ファイル名が一意であることを保証するランタイム生成値です。デバイスのオフにそれらを引き、デバイス側のコピーを削除します。

$ adb pull /data/misc/heap-dump-BLAH-BLAH.hprof tail.hprof 
$ adb pull /data/misc/heap-dump-BLAH-BLAH.hprof-head head.hprof 
$ adb shell rm /data/misc/heap-dump-BLAH-BLAH.hprof /data/misc/heap-dump-BLAH-BLAH.hprof-head 

は、それらを一緒にマージし、中間体を削除します。

$ cat head.hprof tail.hprof > dump.hprof 
$ rm head.hprof tail.hprof 

あなたは今dump.hprofでHPROFダンプを持っています。

データファイル形式が一般的なhprof形式から少し拡張されました。ライセンスの制限により、変更されたハットツールは配布できません。変換ツールhprof-convを使用して、Android固有の部分を出力から取り除くことができます。このツールは最初1.5に含まれていましたが、古いバージョンのAndroidでも動作します。

変換された出力は、Sun JDKで無料で入手できるjhatとEclipse MATを含む任意のhprofデータアナライザで動作するはずです。

+0

メモリアナライザーツール(私の記事で既に述べた)のデモンストレーションです。このツールは、現在のヒープ使用状況のスナップショットを取得します。私はアプリケーションを使用している間、私にヒープの実行ビューを与える何かを探しています。 – sparkymat

+0

ヒープデータを取得するために私がどのように使用したかを示す編集済みの回答 - アンドロイド1.6以降に行われたことはありません。 – Kenny

+0

詳細なコメントありがとうございましたが、前のコメントで述べたように、私は現在のヒープ割り当ての静的スナップショットを取得するつもりはありません。私は、アプリケーションが使用されている間、継続的に更新される動的な "ライブ"ビューを探しています。おそらくそれは不可能ですが、私は確信したかったのです。 – sparkymat

関連する問題