Middle
125
questionbank

В чем отличие между Dalvik Virtual Machine и ART (Android Runtime)?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Основные отличия между Dalvik и ART заключаются в следующем:

  1. Компиляция:

    • Dalvik: Использует Just-In-Time (JIT) компиляцию. Bytecode компилируется в машинный код во время выполнения приложения.
    • ART: Использует Ahead-Of-Time (AOT) компиляцию по умолчанию. Bytecode компилируется в нативный код при первой установке или обновлении приложения. В ART начиная с Android 7.0 (Nougat) также присутствует JIT-компиляция для оптимизации производительности во время выполнения сбора информации о "горячих" участках кода.
  2. Производительность:

    • Dalvik: JIT-компиляция приводит к задержкам во время выполнения, так как компиляция происходит "на лету".
    • ART: AOT-компиляция обеспечивает более высокую производительность во время выполнения, так как большая часть компиляции выполняется заранее. Однако, установка и обновления приложений могут занимать больше времени из-за компиляции.
  3. Энергопотребление:

    • Dalvik: JIT-компиляция может потреблять больше энергии во время работы приложения из-за постоянной компиляции.
    • ART: AOT-компиляция может быть более энергоэффективной во время работы приложения, поскольку большая часть компиляции завершена до запуска.
  4. Использование памяти и дискового пространства:

    • Dalvik: DVM-файлы (Dalvik Executable) меньше по размеру. Нативный код генерируется при выполнении.
    • ART: ART использует OAT-файлы (Optimized Android Executable), которые содержат оптимизированный нативный код. Эти файлы занимают больше места на диске, но позволяют быстрее запускать приложения.
  5. Сборка мусора (Garbage Collection):

    • Dalvik: Менее эффективные алгоритмы сборки мусора, которые могли приводить к "подтормаживаниям" (hiccups) в работе приложений.
    • ART: Улучшенная сборка мусора с алгоритмами, предназначенными для сокращения пауз, что приводит к более плавным анимациям и отзывчивости интерфейса.
  6. Инструментарий и отладка:

    • Dalvik: Отладка и профилирование могли быть сложнее из-за JIT-компиляции.
    • ART: Улучшенная поддержка отладки и профилирования нативного кода.

Краткая таблица-сравнение:

ХарактеристикаDalvik Virtual Machine (DVM)ART (Android Runtime)
Тип компиляцииJIT (Just-In-Time)AOT (Ahead-Of-Time) по умолчанию, JIT с Android 7.0
ПроизводительностьНиже во время выполненияВыше во время выполнения
Время запускаБыстрее при первом запускеМедленнее при установке/обновлении, быстрее при запуске
ЭнергопотреблениеМожет быть выше при работеМожет быть ниже при работе
Использование дискаМеньшеБольше (из-за OAT-файлов)
Сборка мусораМенее эффективнаяБолее эффективная
ПоддержкаУстарела (до Android 4.4)Текущая среда выполнения

ART пришел на смену Dalvik начиная с Android 5.0 (Lollipop) и является стандартной средой выполнения для современных версий Android. Пример кода для иллюстрации отличий в компиляции не применим, так как это низкоуровневые внутренние компоненты ОС, а не код приложения. Мы используем J言語を書き、その上でDalvikまたはARTが動きます。

java