Memory Profiler

Memory Profiler

inwady

Доброго времени суток, сегодня хочу рассказать про небольшой встроенный инструмент в Android Studio, который может помочь в задаче по снятию dump-а приложения.

Для начала давайте разберемся, какие варианты получения дампа существуют:

  • Использование отладчиков gdb, lldb, jdb. Позволят применить следующую команду:
memory read --outfile <dumpfile> <addr from> <addr from>+<count of bytes>

Однако, данный подход достаточно специфичный и подойдет скорее для C/С++ разработчиков. Никаких тебе смузи и гироскутеров :)

  • Применение универсального инструмента fridump для получение цельного дампа всего приложения. Удобно - да, но требует эмулятор или root-права на устройстве. На выходе данный команды получаем директорию с файлами, которые содержат в себе кусочки памяти. Теперь можем пройтись по ним и поискать искомое слово:
strings dump* | grep -i <search word>

Но лично у меня часто возникает ситуация, когда мы ищем Java-объект. Для этого я хотел бы рассказать про замечательный инструмент - Memory Profiler.

  • Использование Memory Profiler (обертка shell команды am dumpheap <argv>) с предварительным исполнением команды adb root.

Для примера я возьму приложение com.android.phone:

Мониторинг CPU
Мониторинг потребления памяти

Также можно мониторить интернет трафик и "Energy".

Нас интересует "Мониторинг потребления памяти", потому что он может действительно много всего. В его toolbar присутствует необычная функциональность:

Dump Java heap

Нажимаем, записываем и получаем удобный Java-dump:

Строки в приложении com.android.phone
Заглядываем внутрь объектов

Теперь интерфейс dump стал милым и приятным. Android Studio действительно классный инструмент :)

В следующих циклах я расскажу: как правильно искать в GUI Android Studio искомое слово.

Report Page