Подготовка вашего приложения к более широким ограничениям по объему памяти.
2 минуты чтения
Отличный пользовательский опыт является центральным элементом миссии Android, и для выполнения этого обещания необходимо, чтобы устройства работали быстро, отзывчиво и надежно. Именно поэтому оптимизация памяти важна как никогда. В рамках всей экосистемы новые устройства сохраняют или даже уменьшают свой физический объем памяти в ответ на рост цен на память, но пользователи по-прежнему ожидают того же бесперебойного и высокопроизводительного взаимодействия с приложениями.
В Android 17 мы ввели ограничения на использование памяти для каждого приложения , начиная с устройств Pixel, чтобы защитить общее качество работы пользователя от приложений, использующих избыточную память и вызывающих замедление работы системы. В течение следующего года все больше производителей будут использовать ограничения на использование памяти для каждого приложения в своих устройствах с конфигурацией оперативной памяти от 4 ГБ до 16 ГБ и более. Если ваше приложение превысит эти лимиты, оно будет замедляться и может быть закрыто. Оптимизация использования памяти вашим приложением имеет важное значение для предотвращения снижения производительности операционной системы и поддержания бесперебойной работы пользователя.
В этой статье мы рассмотрим, как работают эти ограничения на уровне внутренней архитектуры, как измерить объем используемой памяти с помощью новых метрик Android Vitals, а также практические шаги по оптимизации вашего приложения или игры.
Понимание ограничений памяти
Когда ваше приложение превышает выделенный ему объем памяти, Android предпринимает поэтапные действия для защиты быстродействия устройства:
- Подкачка zRAM : Если ваше приложение достигает выделенного лимита, система принудительно перемещает страницы приложения в zRAM (сжатую оперативную память). Хотя zRAM предотвращает немедленное вытеснение, сжатие и распаковка страниц увеличивают нагрузку на процессор, что может привести к заметным рывкам пользовательского интерфейса и замедлению работы приложения.
- Завершение процесса : Если ваше приложение продолжает увеличивать использование памяти сверх порогового значения zRAM, оно будет завершено системой . Чтобы определить, повлияли ли эти ограничения на сеанс вашего приложения, вы можете вызвать
getDescription()внутриApplicationExitInfo. Если система применила ограничение, причина завершения будет указана какREASON_OTHER, а строка описания будет содержать "MemoryLimiter:AnonSwap". Вы также можете использовать профилирование на основе триггеров с помощьюTRIGGER_TYPE_ANOMALYдля автоматического создания дампов кучи при достижении лимита памяти.
Чтобы узнать больше об ограничениях памяти для каждого приложения и системном применении ограничений, ознакомьтесь с документацией по ограничениям памяти приложений в Android 17. Для тестирования вашего приложения на различных конфигурациях устройств используйте команды adb Memory Limiter .
Мониторинг и диагностика проблем с памятью
Невозможно оптимизировать то, что нельзя измерить. Выявление утечек памяти, чрезмерного выделения памяти в куче и сбоев, связанных с нехваткой памяти (OOM), в экосистеме Android требует использования дополнительных инструментов мониторинга:
- Обзор состояния системы на макроуровне с помощью Android Vitals: для широкого обзора на уровне всего сообщества без дополнительных затрат Google Play Console предоставляет важные метрики Android Vitals, такие как использование памяти (анонимный RSS + файл подкачки). и Bitmap Memory Usage . Это дает четкое представление о распределении памяти по различным состояниям процесса (активный, фоновый, воспринимаемые пользователем службы и кэшированные) и диапазонам классов ОЗУ, помогая выявлять аномалии в использовании памяти.
- Отслеживание сбоев ограничителя памяти и ошибок нехватки памяти с помощью Firebase Crashlytics: Чтобы быть в курсе серьезного снижения производительности памяти до того, как это повлияет на ваши ключевые показатели, в версии Crashlytics 20.1.0 добавлены дополнительные отладочные данные, которые помогут вам перехватывать, расставлять приоритеты и исправлять исключения нехватки памяти и сбои ограничителя памяти. Отслеживание этих событий вместе с пользовательскими журналами и метаданными типа «ключ-значение» дает вам мгновенный контекст состояния процесса при возникновении сбоя памяти.
- Трассировка в полевых условиях с помощью ProfilingManager: Для команд, способных поддерживать систему мониторинга производительности, API
ProfilingManagerпредставленный в Android 15 (уровень API 35), позволяет вашему приложению программно запрашивать и собирать подробные артефакты отладки памяти, такие как дампы кучи Java и профили кучи, непосредственно с производственных устройств. Вы также можете запускать захват дампов кучи на основе определенных системных сигналов, таких какTRIGGER_TYPE_OOMиTRIGGER_TYPE_ANOMALY.
Ознакомьтесь с нашей документацией , чтобы узнать больше о других методах мониторинга памяти.
Краткое содержание и дальнейшие действия
В связи с расширением ограничений на использование памяти для каждого приложения в Android по всем классам оперативной памяти, сейчас самое время провести аудит используемой памяти:
- Уделяйте приоритетное внимание оптимизации памяти : предотвратите влияние ограничений памяти на работу вашего приложения, используя лучшие практики .
- Мониторинг использования памяти : отслеживайте поведение вашего приложения в отношении памяти , чтобы выявлять и устранять аномалии.
- Оптимизируйте свою игру : следуйте последним рекомендациям для игр и сложных мультимедийных приложений, чтобы максимально сэкономить память на разных этапах процесса.
Полезные ресурсы и справочные материалы
- Изменения в поведении Android 17 : Ограничения памяти приложений
- Android Vitals : Использование памяти (метрика RSS + swap) и Использование памяти для растровых изображений.
- Блог разработчиков Android : Приоритизация шагов по повышению эффективности использования памяти в Android 17
- Руководство для разработчиков : Управление памятью вашего приложения
Новости о продуктахСегодня мы выпускаем Android 17 и делаем его доступным для большинства поддерживаемых устройств Pixel. В ближайшие месяцы ожидайте появления новых устройств, работающих под управлением Android 17.
Matthew McCullough • 13 мин чтения
Новости о продуктахНа конференции Google I/O '26 мы продемонстрировали, как последние достижения в экосистеме Android могут помочь вам повысить качество вашего приложения, одновременно максимально повысив эффективность разработки.
Ataul Munim • 3 мин чтения
Новости о продуктахОдин из столпов экосистемы Android — это наша общая приверженность доверию пользователей. По мере развития мобильной индустрии менялся и наш подход к защите конфиденциальной информации.
Robert Clifford • 3 мин чтения
Получайте еженедельно самые свежие новости о разработке Android прямо на свою электронную почту.




