Android ==> Анализ памяти ==> Анализатор памяти Eclipse? - PullRequest
46 голосов
/ 24 июня 2010

Мне нужно проверить свое приложение на утечки памяти, мне также нужно увидеть распределение памяти моего приложения. Я скачал и установил анализатор памяти Eclipse, и похоже, что первый шаг - открыть дамп кучи. Но что такое дамп кучи, как я могу создать дамп кучи. И как именно я собираюсь использовать это программное обеспечение, я немного погуглил, но не смог найти никакой полезной информации спасибо

Ответы [ 3 ]

40 голосов
/ 24 июня 2010

Когда вы отлаживаете ваше приложение, откройте DDMS в Eclipse. На панели инструментов есть кнопка дампа кучи, которую можно использовать для генерации дампа кучи для просмотра в анализаторе памяти Eclipse. Я думаю, это поддерживается только с 1.6+ или 2.0+ SDK.

10 голосов
/ 24 июня 2010

Дамп кучи виртуальной машины dalvik необходимо преобразовать в обычный формат hprof с помощью средства преобразования hprof-conv.exe в каталоге инструментов Android SDK. Вы можете открыть этот hprof с Eclipse MAT или другими инструментами: YourKit http://www.yourkit.com/ и JProbe http://www.quest.com/jprobe/

Кроме DDMS вы также можете создать hprof из вашего приложения / кода (только новые SDK) через Debug.dumpHprofData(...)

Обратите внимание, что в DDMS вы можете видеть кучу, которую использует ваше приложение. Он не показывает собственную кучу, которую выделяют внешние ресурсы, такие как растровые изображения. Тем не менее, эти ресурсы также необходимо учитывать при проверке утечек памяти. Когда и нативная куча, и куча приложения составляют до 16 МБ / соотв. 24MB вы получите ошибку OOM.

Вы можете увидеть собственную кучу, которая использовалась (т. Е. Растровыми изображениями в вашем приложении) через Debug.getNativHeapAllocatedSize().

3 голосов
/ 16 июля 2011

Также см. http://developer.android.com/guide/developing/debugging/ddms.html#profiling

Если это поможет, вы можете включить профилирование по локальным областям кода с помощью API отладки. Таким образом, у вас меньше подробностей при анализе трасс, например, в трассировке. См. 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

...