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