アプリケーションのメモリ リークをチェックする必要があります。また、アプリケーションのメモリ割り当ても確認する必要があります。Eclipse メモリー・アナライザーをダウンロードしてインストールしましたが、最初のステップはヒープ・ダンプを開くことのようです。しかし、ヒープ ダンプとは何ですか。どうすればヒープ ダンプを作成できますか。そして、このソフトウェアをどのように使用するのでしょうか。グーグルで調べましたが、有用な情報が見つかりませんでした。
3 に答える
アプリをデバッグするときは、Eclipse でDDMSを開きます。ツールバーには、Eclipse メモリ アナライザーで表示するヒープ ダンプを生成するために使用できるヒープ ダンプ ボタンがあります。これは、1.6 以降または 2.0 以降の SDK でのみサポートされていると思います。
dalvik VM のヒープ ダンプは、Android SDK のツール ディレクトリにある hprof-conv.exe コンバーター ツールを使用して、通常の hprof 形式に変換する必要があります。この hprof は Eclipse MAT またはその他のツールで開くことができます: YourKit http://www.yourkit.com/ および JProbe http://www.quest.com/jprobe/
DDMS のほかに、アプリ/コード (新しい SDK のみ) から hprof を作成することもできます。Debug.dumpHprofData(...)
DDMS では、アプリが使用しているヒープを確認できることに注意してください。ビットマップなどの外部リソースが割り当てているネイティブ ヒープは表示されません。ただし、メモリ リークをチェックする際には、これらのリソースも考慮する必要があります。ネイティブ ヒープとアプリ ヒープの両方を合計すると、それぞれ最大 16 MB になります。24MB では OOM エラーが発生します。
使用されたネイティブ ヒープ (つまり、アプリのビットマップによって) は、 を介して確認できますDebug.getNativHeapAllocatedSize()
。
http://developer.android.com/guide/developing/debugging/ddms.html#profilingも参照してください
役立つ場合は、Debug APIを使用して、コードのローカル領域でのプロファイリングを有効にできます。このようにして、たとえばtraceviewでトレースを分析するときの冗長性が少なくなります。例については、 http://macgyverdev.blogspot.com/2011/07/profiling-android-application-tutorial.htmlを参照してください。
また、DDMSヒープダンプを変換してEclipseメモリアナライザーで表示し、ドミネーターツリーツールを介してリークしているオブジェクトを見つける方法に関する詳細情報:http://macgyverdev.blogspot.com/2011/11/android-track- down-memory-leaks.html