Если вы пишете собственный код и обеспокоены использованием памяти, будет полезно профилировать собственные выделения памяти вашим приложением, чтобы определить, есть ли возможность оптимизации.
Почему вам следует профилировать память вашего приложения
Android предоставляет среду управляемой памяти — когда Android определяет, что ваше приложение больше не использует некоторые объекты, сборщик мусора освобождает неиспользуемую память обратно в кучу. То, как Android ищет неиспользуемую память, постоянно совершенствуется, но в какой-то момент во всех версиях Android система должна ненадолго приостановить ваш код. В большинстве случаев паузы незаметны. Однако если ваше приложение выделяет память быстрее, чем система может ее собрать, ваше приложение может задерживаться, пока сборщик освобождает достаточно памяти для удовлетворения ваших выделений. Задержка может привести к пропуску кадров вашим приложением и вызвать видимое замедление.
Информацию о методах программирования, которые могут сократить использование памяти вашим приложением, см. в статье Управление памятью вашего приложения .
Обзор собственных распределений
При запуске задачи «Отслеживание потребления памяти (исходные выделения)» Android Studio Profiler отслеживает выделение и освобождение объектов в собственном коде за указанный вами период времени и предоставляет следующую информацию:
- Выделения : количество объектов, выделенных с помощью
malloc()
или оператораnew
в течение выбранного периода времени. - Освобождения : количество объектов, освобожденных с помощью
free()
или оператораdelete
в течение выбранного периода времени. - Размер выделений : суммарный размер в байтах всех выделений за выбранный период времени.
- Размер освобожденной памяти : суммарный размер в байтах всей освобожденной памяти за выбранный период времени.
- Общее количество : значение в столбце «Распределения» минус значение в столбце «Освобождения» .
- Оставшийся размер : значение в столбце «Размер распределения» минус значение в столбце «Размер освобождения» .
Вкладка «Визуализация» показывает агрегированное представление всех объектов, связанных с собственным кодом в стеке вызовов в течение выбранного временного диапазона. По сути, она показывает, сколько общей памяти занимает стек вызовов с показанными экземплярами. Первая строка показывает имя потока. По умолчанию объекты располагаются слева направо в зависимости от размера выделения; используйте раскрывающийся список, чтобы изменить порядок.
По умолчанию профилировщик использует размер выборки 2048 байт: каждый раз, когда выделяется 2048 байт памяти, делается снимок памяти. Меньший размер выборки приводит к более частым снимкам, что дает более точные данные об использовании памяти. Больший размер выборки дает менее точные данные, но потребляет меньше системных ресурсов и повышает производительность при записи. Чтобы изменить размер выборки, см. Изменение конфигурации записи .