Art или dalvik на android

введение

ПреамбулаМы популяризировали некоторые вещи о сборке мусора и получили общее представление о концепциях и процессах сборки мусора.Процесс запуска приложенияВ этой статье мы упоминали, что каждое приложение в Android по умолчанию запускается в независимом процессе, и этот независимый процесс представляет собой процесс виртуальной машины, созданный из Zygote. Другими словами, каждое приложение выполняется в независимом процессе. Пространство ВМ. Итак, как Android управляет памятью этих приложений и как управляет памятью этих независимых ВМ?

Сегодня мы поговорим об управлении памятью в Android.

Вы говорите, что ИСКУССТВО экспериментально…

Да, и прямо сейчас он доступен только на устройствах с чипсетами Snapdragon и под управлением Android 4.4 KitKat. У вас есть возможность переключиться с Dalvik на ART из скрытых параметров разработчика, если вы захотите, но имейте в виду, что некоторые из ваших приложений могут работать некорректно. Кроме того, если в Dalvik уже создан кеш приложения, первая перезагрузка после переключения может занять до получаса.

Google в первую очередь сделал ART доступным вместе с KitKat, чтобы разработчики могли поиграть с ним и заложить основу для постоянного перехода в будущем. И это отнюдь не означает, что АРТ уже сегодня готова к употреблению. Это будет в будущем, но пока это экспериментальная версия, которая не подходит для повседневного использования конечным пользователем.

Что касается преимуществ АРТ, то здесь есть смешанные сообщения. По мнению большинства обозревателей, тестовые устройства состоят из четырехъядерных процессоров с более чем 2 гигабайтами оперативной памяти, что является более чем адекватной настройкой, чтобы действительно наблюдать прирост скорости от ART. Тем не менее, по сообщениям случайных пользователей, скорость увеличивается более чем на 50%, а время автономной работы — более чем на 30%. Третьи утверждают, что это не более чем эффект плацебо.

Честно говоря, ничего нельзя сказать, пока он не станет доступным для масс и не потеряет экспериментальный тег. Следовательно, мы отложим эту дискуссию на потом. Что можно сказать с уверенностью, так это то, что будущее за АРТ. Google собирается опередить время компиляции, чтобы действительно соответствовать iOS, своему крупнейшему аналогу, и ART проложит путь. Независимо от того, насколько глупым может показаться это название или насколько оно неполно сейчас, мы продолжим видеть ART все больше и больше.

ART пока эксперимент

Безусловно, в данный момент ART лишь тестируется и доступен только для устройств на версии Android 4.4 и чипсетах от Qualcomm. Однако вы можете уже сейчас переключиться с Dalvik на ART через скрытые инструменты разработчиков (меню открывается после нескольких тапов по номеру сборки в информации об устройстве). Заметим, что не все приложения смогут работать в ART без дополнительных обновлений; кстати, первый запуск в режиме ART может занять до 30 минут.

Google сделал ART доступным для разработчиков сейчас, создавая основу для последующего полного перехода на эту виртуальную машину в будущем. Это не значит, что ART стабилен уже сейчас. Это эксперимент и новая виртуальная машина может быть не готова для повседневного использования.

Пока удалось найти такую информацию на сайте Youhtc.ru
»
Последние несколько лет важной частью работы создателей Android стала борьба с главной врожденной «болезнью» системы — лагами в анимации интерфейса. Первым серьезным шагом в эту сторону стал Project Butter, анонсированный вместе с Android 4.1 Jelly Bean и действительно «ускоривший» систему, но не решивший проблему в корне. В Google это осознают, поэтому готовят ART — замену виртуальной машине Dalvik

В Google это осознают, поэтому готовят ART — замену виртуальной машине Dalvik.

Даже сейчас, в век многоядерных производительных процессоров, при определенном стечении обстоятельств можно заметить, что анимация в Android отрисовывается не идеально, а между некоторыми действиями есть видимые заминки. Проблема комплексная, потому для ее решения нужно было предпринять много шагов — в качестве одного из них решили сменить Dalvik на прекомпилятор ART.

Сейчас Android-код выполняется в Java-машине, созданной Google специально для мобильных устройств, при этом он «на ходу» преобразуется в аппаратный (Just-In-Time Compilation). Такой механизм позволяет разработчику приложения практически не привязываться к конкретной архитектуре или «железу», но наносит серьезный урон производительности, нагружая процессор во время компиляции. Конечно, после первого самого «тормозного» запуска программы часть полученного «нативного» кода сохраняется в кеше, однако полностью проблему лагов это не решает.

ART же представляет из себя AOT-компилятор (Ahead-Of-Time), который преобразует Java-код в «нативный» в процессе установки приложения. То есть пользователь запускает программу уже скомпилированной, что существенно ускоряет ее открытие и выполнение. Вдвойне интересно, что ART уже встроен в Android 4.4 KitKat и активировать его можно в меню разработчика. После переключения на libart.so (библиотека компилятора) устройство перезагружается и компилирует все уже установленные приложения. Ребята из Android Police, внимательно изучившие ART, утверждают, что на кастомных прошивках из AOSP этого делать пока не стоит — могут возникнуть проблемы с пакетом программ от Google.

Даже учитывая неокончательное состояние ART, переход на него существенно влияет на скорость выполнения ресурсоемких задач и плавность работы интерфейса, а также позволяет многоядерным процессорам чаще отключать неиспользуемые ядра, что дает выигрыш во времени автономной работы устройства. Существуют у новой системы компиляции минусы, хотя их сложно назвать значительными: более продолжительное время установки и увеличение финального размера программы на 10-20%. Правда, растет размер лишь кодовой части, которая часто занимает менее половины приложения — мультимедиа (картинки, звук, видео) и другие данные своего размера не меняют.

Оказывается, Google уже не первый год работают над ART и включение его в KitKat — абсолютно обдуманное решение, позволяющее создателям системы провести серьезное тестирование, а разработчикам приложений — подготовиться к грядущему «уходу» Dalvik. Пока не ясно, насколько на новый компилятор повлияли разработчики из FlexyCore, которых Google купили в октябре текущего года, но начинался проект внутри самого поискового гиганта.

В Google пока не говорят, как скоро ART заменит Dalvik, однако ничего не мешает корпорации сделать это уже в следующей версии системы. Интересно, что как и Project Butter, компилятор не требует трудозатрат от разработчиков приложений — они все так же будут писать код на хорошо знакомом языке, используя отработанные практики.
«

У меня нет устройства на Android 4.4 чтобы самому попробовать новую технологию, но уже доступен образ системы от Google, который можно «пощупать» в эмуляторе.

У меня остаются вопросы, будет ли эта функция доступна на других устройствах с Android 4.4 не от Google: Samsung, HTC и т.д. Все ли функции приложения будут корректно работать после перевода на новую платформу?

ART vs Dalvik: ключевые различия

Эд РевольверBlockedUnblockFollowFollowing Nov 10, 2014

Чтобы сравнить ART и Dalvik, нужно сначала разобраться, что же это такое.

В Android для выполнения приложений, которые вы скачиваете в виде файлов APK (и которые не являются компилированным кодом) используется виртуальная машина Dalvik. Для компиляции в ней применяется подход JIT (Just In Time), то есть приложения компилируются при запуске или другом взаимодействии с ними. Это несколько притормаживает приложения при старте и сильнее использует «оперативку».

А виртуальная машина ART, которая появилась относительно недавно и доступна на устройствах с Android 4.4 и процессором Snapdragon, работает по принципу АОТ Ahead Of Time. Если очень приблизительно описать принцип действия, то в среде АРТ приложения компилируются один раз — при установке. И, как следствие, в щадящем режиме расходуют оперативную память и ресурсы процессора. Это, в свою очередь, сказывается на меньшем энергопотреблении. Но есть во всём этом один минус: в памяти устройства такое приложение будет занимать больше места.

Возникает вопрос, какая же виртуальная машина лучше. Очевидных преимуществ у АРТ нет: в каких-то тестах эта виртуальная машина обходит Dalvik, в каких-то они идут на равных, а в некоторых АРТ и вовсе отстаёт. Разница практически незаметна, но АРТ — это новшество, поэтому, явно будет дорабатываться и в будущем внедряться автоматически во все сборки Android.

В новой версии Android появилось одно важное, хотя и не очень заметное, на первый взгляд, нововведение — появилась новая виртуальная машина ART. О том, что такое ART, виртуальная машина и почему она новая, рассказывается в англоязычном блоге Атиф Хана (Aatif Khan), запись из которого мы и решили перевести для вас

Отдельную благодарность за помощь выражаем Анжелу Божинову.

В современном мире технологий и аббревиатур уже никто не удивляется новым названиям и сокращениям. Однако существует проблема: обычные пользователи не всегда полностью осознают, чему же научился их гаджет после обновления. Разработчики редко радуют нас подробными описаниями нововведений и новых технологий, а найти какое-то понятное объяснение на официальном сайте удается крайне редко — в лучшем случае, пользователь обнаружит лишь краткое описание с еще большим количеством непонятных выражений.

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

Android изнутри: сравнение Dalvik и ART

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

Виртуальная машина

Сначала, давайте разберемся чем отличается JVM от DVM.

Java Virtual Machine — виртуальная машина, способная выполнять байт-код Java независимо от базовой платформы. Она опирается на принцип “Write once, run anywhere”. Байт-код Java может быть запущен на любой машине, способной поддерживать JVM.

Можно сказать, что Dalvik — это среда для выполнения компонентов операционной системы Android и пользовательских приложений. Каждый процесс выполняется в своём, изолированном адресном пространстве. Когда пользователь запускает приложение (либо операционная система запускает один из своих компонентов), ядро виртуальной машины Dalvik (Zygote Dalvik VM) создает отдельный, защищенный процесс в общей памяти, в котором непосредственно разворачивается VM, как среда для запуска приложения. Другими словами, изнутри Android выглядит как набор виртуальных машин Dalvik, в каждой из которых исполняется приложение.

Подробно об архитектуре DVM можно почитать тут.

Android Dexer

Изначально, class-файлы преобразовывались в dex-файлы с помощью встроенного DX-компилятора. Но начиная с Android Studio 3.1 и далее, компилятором по умолчанию стал D8. По сравнению с DX-компилятором, D8 компилирует быстрее и выводит dex-файлы меньшие по размеру, при этом обеспечивая более высокую производительность приложения во время исполнения. Полученный таким образом байт-код dex подвергается минификации с помощью open-source утилиты ProGuard. В итоге, мы получаем тот же dex-файл, но только меньше. Далее этот dex-файл используется для сборки apk и, наконец, для развертывания на устройстве Android.

Но следом за D8 в 2018 году пришел R8, который, по сути, является тем же D8, только с дополнениями.

При работе с Android Studio 3.4 и Android Gradle 3.4.0 plugin или выше, Proguard больше не используется для оптимизации кода во время компиляции. Вместо этого плагин работает по умолчанию с R8, который сам выполняет Code shrinking, Optimisation и Obfuscation. Хотя R8 предлагает только подмножество функций, предоставляемых Proguard, он позволяет совершить процесс преобразования Java байт-кода в dex-байт-код единоразово, что еще больше сокращает время сборки.

R8 и сокращение кода

Как правило, приложения используют сторонние библиотеки, такие как Jetpack, Gson, Google Play Services. Когда мы используем одну из этих библиотек, часто в приложении используется только малая часть каждой отдельной библиотеки. Без Code shrinking, весь код библиотеки сохраняется в вашем приложении.

Бывает так, что для улучшения читаемости и удобства поддержки приложения разработчики используют подробный код. Например, могут быть использованы значимые имена переменных и шаблон проектирования для того, чтобы другим было удобнее разобраться в коде. Но шаблоны, как правило, приводят к бОльшему объему кода, чем это необходимо.

В этом случае R8 приходит на помощь. Он позволяет существенно уменьшить размер приложения, оптимизируя размер даже того кода, который действительно используется приложением.

В качестве примера, ниже преведены цифры из доклада Shrinking Your App with R8, который был представлен на Android Dev Summit ’19:

А вот так выглядело сравнение эффективности R8 на этапе выпуска бета-версии (взято из источника Android Developers Blog):

ART vs DVM в Android

DVM была спроектирована именно для мобильных устройств и использовалась как виртуальная машина для запуска андроид приложений вплоть до Android 4.4 Kitkat.

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

Основное явное отличие ART от DVM состоит в том, что ART использует AOT компиляцию, а DVM — JIT компиляцию. Не так давно ART начал использовать гибрид AOT и JIT. Далее разберем это чуть подробнее.

И небольшая схема Dalvik vs ART:

JIT + AOT в ART

Среда выполнения Android (ART), начиная с Android 7, включает компилятор JIT с профилированием кода. JIT-компилятор дополняет AOT компилятор и повышает производительность во время выполнения, экономит место на диске и ускоряет обновления приложений и системы.

Происходит это по следующей схеме:

ИСКУССТВО

С более новой версией Android, особенно с версии 4.4 KitKat, существует концепция ART как альтернатива DVM. ART (Android Run Time) является преемником DVM, который использует тот же байт-код и файлы .dex (но не файлы .odex), при этом преемственность нацелена на повышение производительности, прозрачное для конечных пользователей. Android 5.0 «Lollipop» — первая версия, в которой ART является единственной включенной средой выполнения. Теперь то, что делает ART, — это приложения, которые полностью скомпилированы, когда они установлены на устройстве. Следовательно, более высокая производительность, поскольку нет необходимости преобразовывать код в байт-код, а затем компилировать. Но недостатком является то, что вам нужно больше места для хранения и немного больше времени для установки из-за компиляции во время установки, что означает, что он должен постоянно жить на устройстве. Следовательно, вместо относительно небольшого java-кода у нас есть более крупный байт-код/машинный код. Возможно, вы слышали термины « одексированный» и «деодексированный» . Что делается в этом случае, так это то, что вы берете небольшую часть приложения, а затем предварительно компилируете его, они могут продолжить и сделать часть своего приложения оптимизированной для работы на своем устройстве, и поэтому они теперь предварительно скомпилировали этот раздел приложения и остальная часть компилируется во время выполнения. Так что это делает его немного быстрее и производительнее, чем в Dalvik. Но этот подход требует немного больше места для хранения.

Прежде чем читать дальше, помните, что dex2oat используется для оптимизации и компиляции .dex в файл .oat, который может содержать машинный код в формате ELF. ART компилирует приложения с помощью встроенного в устройство инструмента dex2oat. Эта утилита принимает файлы DEX в качестве входных данных и создает исполняемый файл скомпилированного приложения для целевого устройства. Когда приложение установлено, Android автоматически оптимизирует данные приложения и создает соответствующий файл OAT. Файл OAT создается операционной системой Android для ускорения загрузки приложения Android (файл .APK). Android использует этот файл для более быстрой загрузки приложения, повышая удобство работы пользователей.

Разница между DVM и АРТ

ВИРТУАЛЬНАЯ МАШИНА DALVIK

ВРЕМЯ РАБОТЫ НА АНДРОИД

Более быстрое время загрузки Перезагрузка значительно дольше
Кэш накапливается со временем Кэш создается при первой загрузке
Занимает меньше места из-за JIT Потребляет много места для хранения внутри из-за AOT
Лучше всего работает для небольших устройств хранения Лучше всего работает для больших устройств хранения
Стабильная и проверенная виртуальная машина Экспериментальный и новый — относительно небольшая поддержка приложений
Более длительное время загрузки приложения Чрезвычайно быстрее и плавнее Более быстрая загрузка приложений и меньшее использование процессора
Использует JIT-компилятор (JIT: Just-In-Time) Это приводит к меньшему потреблению места для хранения Использует компилятор AOT (с опережением времени), тем самым компилируя приложения при установке
Задержка приложения из-за пауз сборщика мусора и JIT Уменьшение задержки приложений и улучшение взаимодействия с пользователем
Время установки приложения сравнительно меньше, так как компиляция выполняется позже. Время установки приложения больше, так как компиляция выполняется во время установки.
DVM преобразует байт-код каждый раз, когда вы запускаете определенное приложение.

ART преобразует его только один раз во время установки приложения. Это упрощает работу процессора.

Увеличено время автономной работы за счет более быстрого выполнения.

Что лучше?

Это зависит от устройства, вашего собственного устройства и предпочтений: в долгосрочной перспективе ART лучше, но приложения становятся больше, требуя большого места для хранения с течением времени, в отличие от Flappy Bird, которая весила всего 1 МБ и требовала меньше места. Таким образом, устройства в будущем должны расширять хранилище, если ART собирается доминировать на рынке в ближайшие несколько лет. В Android Lolipop DVM был заменен на ART. Потому что DVM преобразует байт-код каждый раз, когда вы запускаете определенное приложение. Но ART преобразует его только один раз во время установки приложения. Это упрощает работу процессора. ARM — это архитектура. Подобно MIPS, x86 и т. д., DVM/ART работает поверх ARM. Оба они не могут заменить друг друга.

Удаление/отключение встроенных и ненужных приложений

До выхода четвертой версии Android отключать встроенные приложения, не имея прав root, было нельзя. Это приносило покупателям брендовых гаджетов неудобства, ибо каждый производитель норовит запихнуть в прошивку как можно больше программ, которые конечному пользователю попросту не нужны и в сумме кушают приличное количество ресурсов. В четвертой же версии гуглооси такая возможность появилась. Для отключения какого-либо встроенного приложения нужно зайти в «Настройки -> Общие -> Приложения -> Все», выбрать нужную софтину и в «Сведениях о приложении» нажать кнопку «Отключить» (либо «Удалить обновления», а затем уже «Отключить»). Для включения необходимо перейти на вкладку «Отключенные» и выполнить похожую процедуру.

Однако не все так радужно, как кажется на первый взгляд. Во-первых, отключение не влияет на постоянную память — приложение как было установлено, так и остается. Во-вторых, можно отключить отнюдь не все. Лишь некоторые приложения позволяют проделать с собой такой фокус. Я не буду давать много конкретных советов по отключению приложений, поскольку на каждом устройстве их список отличается. Вот краткий список того, что большинству пользователей не нужно, но постоянно висит в системе и отнимает память:

«Браузер» — зачем, если есть более удобные и легкие альтернативы?

«Календарь» и «Память календаря» — не замечал, чтобы кто-то активно ими пользовался.

«Поиск Google» — достаточно бесполезная функция при наличии браузера (осторожно, отключает также и Google Now). «Google Keep», «Google+» и другие не всегда нужные приложения от Google

«Google Keep», «Google+» и другие не всегда нужные приложения от Google.

Помимо этого, рекомендую выключить (удалить) виджеты и живые обои. Кроме того, что эта функциональность требует памяти и процессорного времени, она еще и жрет батарею. Так что для увеличения скорости лучше подобные вещи вырубать. Можно выключить и эффекты на экране блокировки. В моем случае (Samsung со стандартной прошивкой) они находятся в «Настройки -> Устройство -> Экран блокировки -> Эффект при разблокировке».

К слову, о Home Screen — рекомендуется использовать как можно меньше главных экранов. В самом деле, зачем тебе 100500 экранов, если редко используемые приложения можно вызвать и из меню?

Как на самом деле и что лучше, ART или Dalvik?

В Интернете есть уже множество различных сравнений работы Android устройств в двух средах и результаты разнятся. Один из самых масштабных и подробных таких тестов выложен на androidpolice.com (англ.):

производительность в ART и Dalvik,
время работы от батареи, энергопотребление в ART и Dalvik

Суммируя результаты, можно сказать, что очевидных преимуществ на данный момент времени (нужно учитывать, что работа над ART продолжается, эта среда пока только на экспериментальной стадии) у ART нет: в некоторых тестах работа с использованием этой среды показывает лучшие результаты (особенно в том, что касается производительности, но не во всех ее аспектах), а в некоторых других особых преимуществ незаметно или же Dalvik впереди. Например, если говорить о времени автономной работы, то вопреки ожиданиям, Dalvik показывает практически равные результаты с ART.

Общий вывод большинства тестов — очевидной разницы при работе что с ART, что с Dalvik нет. Однако, новая среда и используемый в ней подход выглядят многообещающе и, возможно в Android 4.5 или Android 5 такая разница будет очевидна. (Более того, Google, возможно, сделает ART средой, используемой по умолчанию).

Еще пара моментов, на которые следует обратить внимание, если вы решите включить среду ART вместо Dalvik — некоторые приложения могут работать неправильно (или не работать вообще, например WhatsApp и Titanium Backup), а полная перезагрузка Android может занять 10-20 минут: то есть, если вы включили ART и после перезагрузки телефона или планшета он завис, ждите

Отключение сканирования мультимедиа

По умолчанию Android сканирует все внешние накопители (SD-карты) на предмет мультимедиафайлов. Данная функция, хотя и полезна, достаточно сильно тормозит систему. Отключить ее можно. Для новых накопителей создаем пустой файл.nomedia в корне. Но чтобы отключить отображение уже имеющихся файлов в Android 4.0 и позднее, нужно, помимо создания данного файла в нужной тебе папке, произвести очистку данных и кеша для приложений «Галерея» и «Хранилище мультимедиа» и принудительно их остановить. После следующего запуска все мультимедиафайлы проиндексируются уже с учетом созданных файлов.nomedia.

Приведу несколько советов по самым известным брендам. Стоит отметить, что советы эти годятся только для официальных прошивок, поэтому если у тебя модифицированная прошивка — можешь смело пропускать раздел.

Samsung

Если ты владелец какого-либо из устройств данного бренда, то наверняка обратил внимание, что переход на основной экран по нажатию кнопки Home немного тормозит. Связано это с тем, что по двойному нажатию запускается S Voice — система распознавания речи

Если ты ею не пользуешься, можно отключить эту функцию, сняв чекбокс «Откр. клавишей „Домой“». Кроме того, если ты случайно включил команду пробуждения, лучше ее отключить — использование этой опции влияет на заряд батареи довольно сильно.

Кроме того, на некоторых устройствах Samsung имеется возможность отключения эффектов лаунчера. Для этого сделай долгий тап по пустому месту на домашнем экране, выбери «Настройки домашнего экрана» (Home screen settings) и в подменю «Эффект перехода» (Transition effect) выбери «Нет» (None).

HTC

В отдельных случаях на устройствах HTC может тормозить служба сообщений об ошибках. Хотя подобные вещи и не рекомендуется трогать, можно отключить данную опцию, зайдя в «Настройки -> О телефоне -> Отправлять HTC» (Tell HTC) и поснимав там соответствующие чекбоксы.

Sony

На Sony Xperia SP бывает ситуация, когда телефон внезапно начинает тормозить. Проблему можно попытаться исправить, удалив обновления для Google Chrome: «Настройки -> Приложения -> Chrome -> Удалить обновления».

Что выбрать?

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

ПОСМОТРЕТЬ ВИДЕО

Если позволяет объём памяти, лучше выбирать ART. Этот инструмент не перегружает процессор и быстрее работает с приложениями. Кроме того, это новая система, которая будет дорабатываться, и обрастать новыми возможностями.

Нашлось место для многих изменений и усовершенствований. Большинство из них сразу же бросается в глаза даже рядовому пользователю данной системы. Это, конечно же, установка в качестве стандартного месседжера приложения Hangouts, переделанное меню набора номеров и добавление клавиатуры Emoji. Бывалые же приверженцы Android наверняка ощутят прилив производительности в сравнении с более старыми ее релизами. Однако не обошлось и без скрытых сторон, которые, согласно логике, должны представлять интерес лишь для разработчиков. Впрочем, значимость одного из подобных нововведений особенно велика. Кроме того, вскоре оно коснется каждого из нас, а потому умолчать о его подробностях было бы просто преступлением.
Наверное, многие из вас хотя бы краем уха слышали о том, что в Android KitKat появился особый режим. Суть его заключается в более быстром запуске приложений и в более стабильном и плавном их выполнении. Возможно, попытки разобраться в данном вопросе самостоятельно не были увенчаны успехом. Оно и неудивительно: слова «виртуальная машина» и «компиляция» способны испугать кого-угодно, особенно, если информация потребляется из англоязычного источника. Для решения данной проблемы мы решили разобраться в сути вопроса самостоятельно, изложив его в максимально доступном виде.

Дальвик против АРТ — Сравнение

Давайте просто сделаем быстрое сравнение обеих виртуальных машин, прежде чем двигаться дальше.

Dalvik

ИЗОБРАЗИТЕЛЬНОЕ ИСКУССТВО

Использует подход Just-In-Time (JIT), который приводит к меньшему потреблению дискового пространства, но увеличивает время загрузки приложения Использует подход с опережением времени (AOT), который компилирует приложения, когда они установлены, что приводит к более быстрому времени загрузки и меньшему использованию процессора
Кэш накапливается со временем, поэтому время загрузки быстрее Кэш создается при первой загрузке, поэтому перезагрузка устройства занимает значительно больше времени
Работает лучше для внутренних устройств хранения с меньшим объемом памяти, так как занимаемое пространство меньше Потребляет намного больше внутреннего пространства хранения, так как хранит скомпилированные приложения в дополнение к APK
Стабильно и проверено временем — виртуальная машина выбора для разработчиков приложений Очень экспериментальный и новый — пока не так много поддержки со стороны разработчиков приложений

Что же такое Dalvik и в чем его проблема?

Вот и главный вопрос. Dalvik используется в Android с первой версии ОС, с 2007 года, а серьезное изменение за все это время было практически одно — появление в Froyo «компиляции на ходу», более известной как JIT. Главная ее особенность — приложение полностью компилируется при открытии или запуске пользователем соответствующих инструкций. Это очень полезное исправление, так как до 2.2 все приложения компилировались шаг за шагом, что уменьшало скорость работы; единственный минус такого решения — при старте программы на процессор идет серьезная нагрузка.

Во избежание дополнительной работы при повторном запуске программы, система собирает вместе все скомпилированные за время использования приложения инструкции и отправляет их в кэш, который хранится в файловой системе с расширением *.ODEX (Optimized Dalvik EXecutable). Как только вы во второй раз запустите приложение, Dalvik уже не будет заниматься компиляцией, а загрузит уже оптимизированные под ваше устройство данные в память. Однако вызов функции приложения, не использовавшейся ранее, приведет к новому компилированию инструкций. Если в этот момент система проводит стороннюю работу (например, прослушивание музыки или обновление приложений), то из-за перегрузки процессора и подсистем ввода/вывода у памяти можно пронаблюдать ощутимые рывки и тормоза. Вот тут и появляется ART.

Понравилась статья? Поделиться с друзьями:
Клуб настройки
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: