Connect with us

GitHub

AVD-SLIM — оптимизатор оперативной памяти и процессора для эмулятора Android

Опубликовано

/

     
     

AVD-SLIM — это легковесная CLI-утилита, не имеющая внешних зависимостей, она снижает потребление оперативной памяти хост-системы виртуальным устройством Android (AVD) с ~8 ГБ до ~1,5 ГБ и практически сводит к нулю нагрузку на процессор в режиме простоя на системах с Apple Silicon и Linux.

При разработке Android-приложений на macOS или Linux разработчики нередко замечают, что процесс qemu-system-aarch64 потребляет от 5 до 8+ ГБ оперативной памяти в Activity Monitor.

Почему эмулятор потребляет 8 ГБ?

  1. Ловушка Lavapipe: Android Studio часто по умолчанию использует hw.gpu.mode = auto, из-за чего происходит откат на программную растеризацию Mesa на CPU (lavapipe). В результате около 4 ГБ буферов программного рендеринга выделяются непосредственно в оперативной памяти хоста поверх памяти гостевой ОС.
  2. Образы с размером страницы 16 КБ: на современных ARM64-образах (google_apis_ps16k) QEMU жёстко задаёт минимальный объём памяти (minRam = 4096MB), молча игнорируя более низкие настройки ОЗУ.
  3. Лишние системные службы Android: более 35 необязательных фоновых процессов — Google Assistant, System Intelligence, Maps, Photos, YouTube, телеметрия и другие — будят ядра CPU и засоряют память.
  4. Устаревшие снимки состояния: Android Studio повторно загружает закэшированные снимки (hardware-qemu.ini), в которых сохраняются тяжёлые состояния на 4 ГБ даже после перезапуска.

Решение

Так же как simslim отключает лишнюю активность iOS Simulator через launchctl, avdslim, AVD-SLIM:

  1. Передаёт QEMU параметр -lowram: снимает внутренний нижний предел в 4 ГБ и запускает ядро Android в режиме малого объёма памяти (hw.ramSize = 1024M или 1536M).
  2. Принудительно включает аппаратное ускорение 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.
  3. Отключает более 24 лишних фоновых служб: выключает необязательные сервисы Google через pm disable-user --user 0.
  4. Убирает задержки анимаций: устанавливает масштаб анимации окон, переходов и аниматоров в 0x.
  5. Снижает фоновую активность: ограничивает background_process_limit = 4, сохраняя работу OAuth и биометрии, а также отключает автосинхронизацию.
  6. Очищает кэши: сбрасывает страничные кэши Linux и выполняет уплотнение памяти.
┌────────────────────────────────────────────────────────────────────────┐
│  Before:  qemu-system-aarch64  ██████████████████████████  8,518 MB    │
│  After:   qemu-system-aarch64  █████                       1,560 MB    │
│                                                                        │
│ ⚡ Reclaimed: ~6.0 GB host RAM (82% reduction)                         │
└────────────────────────────────────────────────────────────────────────┘
AVD-SLIM на GitHub: https://github.com/kdbhalala/avdslim
Платформа: Android
⭐️: 31
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: