Android ==> Анализ памяти ==> Анализатор памяти Eclipse?

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

3 ответа

Решение

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

Дамп кучи виртуальной машины 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(),

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

Если это поможет, вы можете включить профилирование по локальным областям кода с помощью Debug 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

Другие вопросы по тегам