Система использует алгоритм определения нехватки памяти (Out-of-memory killer, OOM killer) для завершения процессов с целью освобождения ресурсов. Каждый процесс имеет приоритет, основанный на его состоянии и компонентах:
- Foreground process: Активность, с которой пользователь взаимодействует. Самый высокий приоритет.
- Visible process: Активность видна на экране, но не на переднем плане (например, диалоговое окно). Высокий приоритет.
- Service process: Запущенная служба (например, воспроизведение музыки в фоне). Приоритет ниже, чем у видимого процесса.
- Cached process: Процесс, который не имеет активных компонентов и может быть перезапущен. Наименьший приоритет.
OOM killer сначала пытается завершить процессы с самым низким приоритетом (Cached process), затем переходит к Service process и так далее, пока не будет достаточного количества свободной памяти.
Также учитываются:
- Время последней активности процесса: Более "старые" процессы с низким приоритетом завершаются первыми.
- Объем используемой памяти: Процессы, потребляющие много памяти, могут быть завершены раньше, даже если их приоритет выше, чем у других, использующих меньше ресурсов.
Система старается поддерживать отзывчивость и стабильность, завершая процессы наименее болезненным для пользователя способом.