AVD-SLIM — это легковесная CLI-утилита, не имеющая внешних зависимостей, она снижает потребление оперативной памяти хост-системы виртуальным устройством Android (AVD) с ~8 ГБ до ~1,5 ГБ и практически сводит к нулю нагрузку на процессор в режиме простоя на системах с Apple Silicon и Linux.
При разработке Android-приложений на macOS или Linux разработчики нередко замечают, что процесс qemu-system-aarch64 потребляет от 5 до 8+ ГБ оперативной памяти в Activity Monitor.
Почему эмулятор потребляет 8 ГБ?
- Ловушка Lavapipe: Android Studio часто по умолчанию использует
hw.gpu.mode = auto, из-за чего происходит откат на программную растеризацию Mesa на CPU (lavapipe). В результате около 4 ГБ буферов программного рендеринга выделяются непосредственно в оперативной памяти хоста поверх памяти гостевой ОС. - Образы с размером страницы 16 КБ: на современных ARM64-образах (
google_apis_ps16k) QEMU жёстко задаёт минимальный объём памяти (minRam = 4096MB), молча игнорируя более низкие настройки ОЗУ. - Лишние системные службы Android: более 35 необязательных фоновых процессов — Google Assistant, System Intelligence, Maps, Photos, YouTube, телеметрия и другие — будят ядра CPU и засоряют память.
- Устаревшие снимки состояния: Android Studio повторно загружает закэшированные снимки (
hardware-qemu.ini), в которых сохраняются тяжёлые состояния на 4 ГБ даже после перезапуска.
Решение
Так же как simslim отключает лишнюю активность iOS Simulator через launchctl, avdslim, AVD-SLIM:
- Передаёт QEMU параметр
-lowram: снимает внутренний нижний предел в 4 ГБ и запускает ядро Android в режиме малого объёма памяти (hw.ramSize = 1024Mили1536M). - Принудительно включает аппаратное ускорение GPU на разных платформах: использует
-gpu host, чтобы рендеринг выполнялся нативно через драйверы графики хоста, полностью обходя программные растеризаторы на CPU:- macOS (Apple Silicon / Intel): нативное аппаратное ускорение через Apple Metal.
- Linux / Ubuntu (Desktop): нативные DRI / OpenGL / Vulkan через Mesa / NVIDIA (/dev/dri).
- Linux / Ubuntu (без графической среды, CI / Docker): автоматически определяет отсутствие $DISPLAY и использует Google SwiftShader (-gpu swiftshader_indirect), чтобы избежать сбоев из-за отсутствия дисплейного сервера и одновременно ограничить потребление памяти.
- Windows 10 / 11: Direct3D 11 через ANGLE либо нативные Desktop OpenGL / Vulkan.
- Отключает более 24 лишних фоновых служб: выключает необязательные сервисы Google через
pm disable-user --user 0. - Убирает задержки анимаций: устанавливает масштаб анимации окон, переходов и аниматоров в 0x.
- Снижает фоновую активность: ограничивает
background_process_limit = 4, сохраняя работу OAuth и биометрии, а также отключает автосинхронизацию. - Очищает кэши: сбрасывает страничные кэши Linux и выполняет уплотнение памяти.
┌────────────────────────────────────────────────────────────────────────┐ │ Before: qemu-system-aarch64 ██████████████████████████ 8,518 MB │ │ After: qemu-system-aarch64 █████ 1,560 MB │ │ │ │ ⚡ Reclaimed: ~6.0 GB host RAM (82% reduction) │ └────────────────────────────────────────────────────────────────────────┘

