Android OOMВысокая

OOM ошибка на Android: причины и 5 проверенных способов исправить

Статья подробно разбирает ошибку OutOfMemoryError (OOM) на Android. Вы узнаете, почему она возникает, и получите 5 практических способов её устранения — от быстрой очистки кеша до глубокой оптимизации приложений.

Обновлено 17 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Android 8.0+Все производители (Samsung, Xiaomi, Google Pixel и др.)

Что означает ошибка OOM на Android

OutOfMemoryError (OOM) — это критическая ошибка Java-виртуальной машины (ART на Android), которая возникает, когда приложению или системе не хватает оперативной памяти (RAM) для выделения нового объекта. В логах вы можете видеть:

java.lang.OutOfMemoryError: Failed to allocate a 20971520-byte allocation with 4194304-byte free memory and 64MB until OOM

Ошибка приводит к мгновенному завершению (крашу) приложения или даже всей системы (если проблема в системном процессе). Чаще всего она появляется при:

  • Запуске «тяжёлых» игр или приложений для редактирования фото/видео.
  • Быстром переключении между несколькими тяжёлыми приложениями.
  • Фоновой работе сервисов (мессенджеры, стриминговые приложения).

Причины возникновения

  1. Утечки памяти (Memory Leak) в приложении. Например, фрагмент или активность не освобождает ссылки на контекст (Context), что не даёт сборщику мусора (Garbage Collector) очистить память.
  2. Загрузка слишком больших ресурсов без их сжатия (изображения в full resolution, несжатые аудио/видео).
  3. Слишком много фоновых процессов. Современные оболочки (One UI, MIUI) агрессивно удерживают приложения в памяти, что быстро её заполняет.
  4. Бесконечные циклы или рекурсия в коде, создающие объекты без очистки.
  5. Некорректная работа системных сервисов (особенно на кастомных прошивках или после обновления ОС).

Способы решения

Способ 1: Очистка кеша и данных приложения (быстрое решение)

Часто помогает, если проблема в конкретном приложении (игра, соцсеть).

  1. Откройте НастройкиПриложения.
  2. Найдите проблемное приложение (то, которое падает) и тапните по нему.
  3. Выберите Память (или Хранилище).
  4. Нажмите «Очистить кеш», затем «Очистить данные» (последнее сбросит настройки и вход в аккаунт).

⚠️ Важно: Очистка данных удалит локальные файлы (сохранения в играх, кэшированные сообщения). Убедитесь, что они синхронизированы с облаком.

Способ 2: Управление фоновыми процессами и оптимизация памяти

Если OOM возникает в разных приложениях, возможно, система не справляется с нагрузкой.

  1. Включите оптимизацию памяти (на некоторых прошивках):
    • Samsung: Настройки → Батарея и производительность → Режим энергосбережения (или «Оптимизировать»).
    • Xiaomi/Redmi: Настройки → Батарея и производительность → Экономия заряда → Выбрать «Настраиваемые режимы» → Ограничить фоновую активность.
  2. Вручную закройте все фоновые приложения через Recent Apps (квадратная кнопка). На некоторых прошивках есть кнопка «Закрыть все».
  3. Отключите автозапуск ненужных приложений:
    • В Настройки → Приложения → Приложение → Автозапуск (доступно на Xiaomi, Huawei, Honor). Отключите всё, кроме мессенджеров и системных сервисов.

Способ 3: Оптимизация изображений и медиафайлов (для разработчиков/пользователей)

Если вы разрабатываете приложение или имеете доступ к его файлам:

  • Сжимайте изображения перед загрузкой в память. Используйте библиотеки like Glide или Picasso с автоматическим downsampling.
  • Разбейте большие изображения на тайлы (для карт).
  • Не храните большие файлы в памяти — используйте потоковое чтение (FileInputStream) вместо BitmapFactory.decodeFile.

Пример для Glide (Kotlin):

Glide.with(context)
    .load(imageFile)
    .override(1080, 1920) // явно задаём размер
    .into(imageView)

Способ 4: Использование Android Studio Profiler для поиска утечек

Если вы разработчик, это самый точный способ.

  1. Запустите приложение на устройстве/эмуляторе в Android Studio.
  2. Откройте Profiler (View → Tool Windows → Profiler).
  3. Выберите вкладку Memory и нажмите Record.
  4. Воспроизведите действия, приводящие к OOM (например, открытие фрагмента много раз).
  5. Остановите запись и проанализируйте Heap Dump. Ищите объекты с большим retained size, которые не собираются мусором (например, Activity или Context).

💡 Совет: Обратите внимание на static-поля, которые хранят контекст, и на неочищённые Listener'ы.

Способ 5: Сброс к заводским настройкам (крайняя мера)

Если проблема системная и не решается другими способами (например, после кастомной прошивки):

  1. Сделайте полный бэкап всех данных (фото, контакты, сообщения).
  2. Перейдите в НастройкиСбросСброс настроек (или «Сброс до заводских»).
  3. Подтвердите и дождитесь перезагрузки.
  4. Настройте устройство заново и восстанавливайте данные.

⚠️ Внимание: Удалит все данные с телефона, включая установленные приложения и их данные.

Профилактика

  • Регулярно обновляйте приложения и систему — в обновлениях часто исправляют утечки памяти.
  • Не устанавливайте «тяжёлые» кастомные оболочки (например, некоторые порты LineageOS) на устройства с малым RAM (<4 ГБ).
  • Используйте «Лёгкие» альтернативы для соцсетей (например, Facebook Lite) и браузеров (Hermit).
  • Включайте режим энергосбережения при низком заряде — он ограничивает фоновую активность.
  • Для разработчиков: всегда используйте WeakReference для контекста в долгоживущих объектах, тестируйте на устройствах с малым RAM (2-3 ГБ).

Часто задаваемые вопросы

❓ Можно ли как-то «увеличить» оперативную память на Android программно?

Нет. RAM — это физический ресурс. Можно только оптимизировать её использование (закрывать приложения, очищать кеш). Некоторые прошивки предлагают «виртуальную память» (сжатый swap на внутреннем хранилище), но это сильно замедляет работу.

❓ Почему после очистки кеша приложение работает, но потом снова падает?

Очистка кеша — временная мера. Если есть утечка памяти в коде приложения, проблема вернётся после того, как приложение снова начнёт накапливать объекты. Нужно ждать обновления от разработчика.

❓ Связана ли OOM ошибка с нехваткой места на диске?

Косвенно. Если на устройстве мало свободного места (<10%), система хуже управляет памятью и swap-файлами. Освободите хотя бы 1-2 ГБ.

❓ Как узнать, какое приложение «съедает» память?

  • Настройки → Приложения → Три точки → Сортировать по размеру (покажет самые объёмные).
  • Используйте Developer OptionsПроцессы в памяти (активируется в Настройки → О телефоне → Номер сборки — тап 7 раз). Там видно использование RAM каждым процессом.

Часто задаваемые вопросы

Что такое OOM ошибка на Android простыми словами?
Почему возникает OOM на хорошем телефоне с 8 ГБ RAM?
Можно ли увеличить лимит памяти для конкретного приложения?
Ошибка OOM только в одной игре/приложении. Что делать?

Полезное

Очистите кеш и данные проблемного приложения
Закройте все фоновые приложения
Перезагрузите устройство
Удалите или отключите неиспользуемые приложения
Обновите систему и приложения
Сбросьте настройки телефона (крайняя мера)