web-dev-qa-db-ja.com

Android ==>メモリ分析==> Eclipseメモリアナライザ?

アプリケーションでメモリリークをチェックする必要があります。また、アプリケーションのメモリ割り当てを確認する必要があります。 Eclipseメモリアナライザーをダウンロードしてインストールしましたが、最初のステップはヒープダンプを開くことです。しかし、ヒープダンプとは何ですか、どのようにヒープダンプを作成できますか?そして、私はこのソフトウェアをどのくらい正確に使用するつもりですか、いくつかのグーグルをしましたが、有用な情報が見つかりませんでした

46
aryaxt

アプリをデバッグするときは、Eclipseで [〜#〜] ddms [〜#〜] を開きます。ツールバーには、Eclipseメモリアナライザーで表示するヒープダンプを生成するために使用できるヒープダンプボタンがあります。これは1.6+または2.0+ SDKでのみサポートされていると思います。

40
Robby Pond

Dalvik VMのヒープダンプは、Android SDKこのhprofは、Eclipse MATまたは他のツールで開くことができます:YourKit http://www.yourkit.com/ およびJProbe http://www.quest.com/jprobe/

DDMSのほかに、Debug.dumpHprofData(...)を介してアプリ/コード(新しいSDKのみ)からhprofを作成することもできます。

DDMSでは、アプリが使用しているヒープを確認できることに注意してください。ビットマップなどの外部リソースが割り当てているネイティブヒープは表示されません。それでも、これらのリソースは、メモリリークをチェックするときに考慮する必要があります。ネイティブヒープとアプリヒープの両方が合計16MB/respになる場合24MBの場合、OOMエラーが発生します。

Debug.getNativHeapAllocatedSize()を使用して、使用されているネイティブヒープを確認できます(つまり、アプリのビットマップによって)。

10
Mathias Conradt

http://developer.Android.com/guide/developing/debugging/ddms.html#profiling も参照してください

役立つ場合は、デバッグAPIを使用して、コードのローカルエリアでのプロファイリングを有効にできます。このようにして、たとえばtraceviewでトレースを分析する際の冗長性が少なくなります。例については http://macgyverdev.blogspot.com/2011/07/profiling-Android-application-tutorial.html をご覧ください。

そして、DDMSヒープダンプをEclipse Memory Analyzerで表示し、ドミネーターツリーツールを介してリークしているオブジェクトを見つけることができるようにする方法に関する詳細情報: http://macgyverdev.blogspot.com/2011/11/ Android-track-down-memory-leaks.html

3
Johan Norén