Найти в Дзене

Что ты знаешь про Dalvik и Art?

Сейчас будет сложно. Dalvik и Art — это две виртуальные машины, которые были разработаны специально для Android. Всё началось с Dalvik и использовался он с самого начала и до Android 4.4. Дальше я буду сокращать до DVM (Dalvik Virtual Machine). Особенности DVM: В Android 4.4 появился Art. На этой версии можно было выбрать, что именно использовать. На Android 5.0 Art заменил Dalvik. Особенности ART: Про JIT + AOT: Теперь при запуске снова используется JIT-компилятор (как в Dalvik, а значит всё будет очень быстро), но собирается информация, какой код выполняется чаще всего. И потом AOT-компиляция выполняется только для отдельных участков приложения. Вопросы, которые можно задать: Дубль статей в телеграмме — https://t.me/android_junior Мой твиттер в телеграмме — https://t.me/android_junior_notes

Сейчас будет сложно. Dalvik и Art — это две виртуальные машины, которые были разработаны специально для Android. Всё началось с Dalvik и использовался он с самого начала и до Android 4.4. Дальше я буду сокращать до DVM (Dalvik Virtual Machine).

Особенности DVM:

  • Используется архитектура на основе регистров (в JVM стек). Регистры — это такие штуки, из которых всегда можно смотреть значение и всегда можно записывать. Регистровая архитектура чуть быстрее, но требовательнее к ресурсам, потому что дополнительно следить надо. На современных процессорах куча регистров (около 10 общего пользования, но это не точно). Если регистры такие классные, то почему их нет в JVM? Потому что джава должна работать везде, в том числе на микроконтроллерах/микроволновках, которые ничего не знают про регистры.
  • Используется JIT-компиляция (Just In Time). Это означает, что изначально компилируется только тот код, который необходим для запуска. А остальное уже компилируется во время выполнения, когда понадобится. Из плюсов тут, что уменьшается время установки. Но огромный минус: запуск и работа приложения будут более медленными.
  • Требуется меньше памяти, чем для приложений с ART.
  • Так как компиляция происходит во время выполнения, то батарея значительно уменьшатся и увеличивается нагрузку на CPU.
  • Class-файлы преобразуются в .dex. И из них уже собирается апк.

В Android 4.4 появился Art. На этой версии можно было выбрать, что именно использовать. На Android 5.0 Art заменил Dalvik.

Особенности ART:

  • Используется AOT-компиляция (Ahead Of Time). Это означает, что весь код компилируется во время установки приложения. Тут ускоряется запуск и работа приложения, но замедляется установка, потому что сразу создается кеш. И из-за кеша требуется больше памяти.
  • Начиная с Android 7 используется смешанная компиляция: JIT + AOT. Это значительно повышает производительность и экономит место. Чуть ниже расскажу подробнее про это.
  • Меньше нагрузка на батарею и CPU, потому что нет компиляции во время выполнения.
  • Значительно улучшилась сборка мусора. В Dalvik сборщики мусора 2 раза проходились по куче. В Art куча чистится за один раз.

Про JIT + AOT:

Теперь при запуске снова используется JIT-компилятор (как в Dalvik, а значит всё будет очень быстро), но собирается информация, какой код выполняется чаще всего. И потом AOT-компиляция выполняется только для отдельных участков приложения.

Вопросы, которые можно задать:

  1. А давай подробнее, как вообще собирается апк и что там происходит?
  2. Давай подробнее про сборку мусора.

Дубль статей в телеграмме — https://t.me/android_junior

Мой твиттер в телеграмме — https://t.me/android_junior_notes