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:


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

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


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