Профилировщик памяти AndroidStudio (анализатор памяти)

1. Запись распределения Java/Kotlin

Просмотрите стек вызовов объектов на уровне Java и количество созданных объектов за короткий период времени. Его можно использовать для быстрого анализа джиттера памяти, а можно использовать для быстрого нахождения стека вызовов объекта (эквивалентно мату).Как видно из рисунка
вставьте сюда описание изображения
выше, за короткое время создается 23 массива char[] , а самый большой char[] занимает 20 КБ, см. стек cll. Было обнаружено, что стек вызовов создан методом в CheckAppProcessTask.

2. Захватите дамп кучи

Он используется для получения текущего снимка памяти, просмотра состояния памяти текущего приложения процесса и может использоваться для анализа использования памяти уровня Java и собственного уровня.Из-за 0Leaks
вставьте сюда описание изображения
на приведенном выше рисунке нет Утечка памяти активности/фрагмента, поэтому я не буду ее здесь представлять.

Затем проанализируйте, как проверить использование памяти, стек вызовов и другие проблемы с памятью.

Устранение неполадок с использованием больших объектов памяти

Например, из рисунка выше видно, что память слоя Java занимает больше объектов: CoroutineScheduler в сопрограмме, которая занимает 8M памяти.

Затем проверьте, какие объекты вызывают оккупацию:
вставьте сюда описание изображения
После проверки выясняется, что CoroutineScheduler в определенной версии сопрограммы создаст объект массива 8M.

Затем проверьте использование памяти объектом Bitmap:

Поскольку тестовое устройство — Android 12, растровое изображение занимает память собственного слоя в моментальном снимке памяти. Откройте список растровых изображений и обнаружите, что максимальный объем памяти, занимаемый растровым изображением, превышает 500 КБ. Дважды щелкните его, отметьте gc и проверьте стек вызовов, чтобы увидеть, какие объекты содержат растровое изображение и не освобождаются.

вставьте сюда описание изображения
Наконец, обнаружено, что растровое изображение удерживается представлением, которое удерживается объектом IconManager.

Нужно совмещать бизнес и сцену, чтобы анализировать, нужно ли уничтожать объект и каких объектов слишком много.Точно так же говорить об оптимизации .

3. Запишите собственные выделения (менее используемые, менее знакомые)

Он используется для просмотра создания объектов c++/c в текущий период времени
вставьте сюда описание изображения
В представлении Визуализация: Интуитивно просматривайте создание собственных объектов в каждом потоке
вставьте сюда описание изображения
Резюме : Оптимизация памяти, по сути, уменьшает утечки памяти (не освобождается в сценариев использования) объектов) и сократить использование больших объектов и уменьшить дрожание памяти, вызванное частым созданием объектов.

Supongo que te gusta

Origin blog.csdn.net/hexingen/article/details/131940521
Recomendado
Clasificación