java - проверить - как работает dalvik




В чем разница между DVM и ART? Почему DVM был официально заменен на ART в Lollipop? (3)

Android 4.4 KitKat, Google решила представить новый способ запуска приложений поверх операционной системы Android. Давайте внимательнее посмотрим на то, что эта новая среда выполнения называется ART

ART - двухлетний секретный проект Google, целью которого является повышение производительности наших устройств Android.

Android L (5.0) ART был сделан как среда выполнения по умолчанию (ART полностью заменил Dalvik).

ART (Android RunTime) - следующая версия Dalvik. Dalvik - это среда выполнения, байт-код и виртуальная машина, используемые системой Android для запуска приложений Android.

Dalvik основан на JIT (как раз вовремя) компиляции. Это означает, что каждый раз, когда вы запускаете приложение, часть кода, необходимая для его выполнения, будет транслироваться (компилироваться) в машинный код в этот момент. По мере прохождения через приложение дополнительный код будет компилироваться и кэшироваться, чтобы система могла повторно использовать код во время работы приложения. Поскольку JIT компилирует только часть кода, он занимает меньше места в памяти и использует меньше физического пространства на устройстве.

АРТ против Далвика / AOT против JIT

Преимущества ART перед Dalvik:

  1. Скорость запуска приложений удивительно высока в случае ART, так как при исполнении ничего не компилируется.
  2. Скорость загрузки выше, чем у dalvik, поскольку с раздела dalvik ничего не выполняется, как в случае с odexed ROM в dalvik
  3. Увеличивает резервное копирование батареи за счет снижения нагрузки на процессор из-за отсутствия компиляции при выполнении приложений.
  4. Улучшенная сборка мусора (GC)
  5. И, наконец, это большая награда для разработчиков, потому что большинство разработчиков обеспокоены тем, что одексированные ПЗУ быстрее, чем деодексированные ПЗУ, но они будут деодексировать свои ПЗУ, поскольку они интенсивно их оформляют. В случае ART независимо от того, является ли ПЗУ деодексированным или деодексированным, не имеет значения, при установке приложений компилируется полный код на машинный язык. так что даже деодексированные ПЗУ так же быстры, как и одексированные в АРТ

Недостатки АРТ

  1. Так как ART предварительно компилирует приложения при установке, он занимает на 10-20% больше места при установке, чем dalvik.
  2. Поскольку байт-коды dex преобразуются в собственный машинный код при самой установке, установка занимает больше времени.

Время установки моего Nexus 4 для одного из наших крупных проектов увеличилось с ~ 17 с до ~ 25 с.

Результаты тестов Dalvik и ART (Android 4.4): Linpack

Single Thread ---> Dalvik (135) ---> ART (149) ---> 10,93%

Многопоточность ---> Dalvik (336) ---> ART (383) ---> 13,82%

Начиная с Android Lollipop, Google заменил DVM на ART, потому что ART быстрее, чем DVM. Есть ли другая причина для этого?


В Android Lolipop DVM был заменен на ART. Потому что DVM конвертирует байт-код каждый раз, когда вы запускаете определенное приложение. Но ART преобразует его только один раз во время установки приложения. Это облегчает выполнение процессора. ARM - это архитектура. Как MIPS, x86 и т. Д. DVM / ART работает поверх ARM. Оба они не могут заменить друг друга. Я надеюсь, что это очищает ваше замешательство.


Есть некоторые значительные улучшения производительности, которые приносит ART, которых не было в Dalvik. Но у каждого плюса тоже есть свои минусы. Я постараюсь обсудить здесь как преимущества, так и недостатки.


1) Подход к компиляции

Это, безусловно, самое большое преимущество ART над Dalvik. Старик Дальвик использовал подход Just-In-Time (JIT), в котором компиляция выполнялась по требованию. Все файлы dex были преобразованы в соответствующие им нативные представления только тогда, когда это было необходимо.

Но ART использует подход Ahead-Of-Time (AOT) , в котором файлы dex были скомпилированы до того, как они были востребованы. Это само по себе значительно повышает производительность и время автономной работы любого устройства Android.

Например

В случае Dalvik, когда вы касаетесь значка приложения, чтобы открыть его, необходимые файлы dex преобразуются в их эквивалентные собственные коды. Приложение начнет работать только после завершения компиляции. Таким образом, приложение не отвечает, пока это не заканчивается.

Более того, этот процесс повторяется каждый раз, когда вы открываете приложение, которое тратит время процессора и ценный заряд батареи.

Но в случае ART, когда вы устанавливаете приложение, все файлы dex преобразуются раз и навсегда . Таким образом, установка занимает некоторое время, а приложение занимает больше места, чем в Dalvik, но производительность значительно улучшена, а время автономной работы разумно сохраняется .


2) Время загрузки

В случае Dalvik, кэш создается со временем, когда устройство работает, и приложения используются, как указано подходом JIT. Так что время загрузки очень быстрое.

Но в случае ART кеш создается во время первой загрузки, поэтому в случае ART время загрузки значительно больше . Иногда вы можете увидеть диалоговое окно «Оптимизация приложений» при загрузке.


3) Использование пространства

Пространство, используемое приложениями, работающими на ART, намного больше, чем у Dalvik. Как 20 МБ приложение на Dalvik, занимает более 35 МБ на АРТ.

Так что, если у вас мало места для хранения данных, это может стать для вас огромным недостатком .


4) АРТ чертовски быстро

Как уже говорилось выше, ART очень быстрый и плавный . Приложения очень быстрые и отзывчивые. Любое сравнение между Dalvik и ART, безусловно, заставит устройство ART выиграть со значительным отрывом.

ART - это ответ всем тем, кто утверждал, что iOS быстрее и плавнее, чем Android, а также более экономична от батареи.





dalvik