Недавно я ответил this question, где был описан весь процесс установки файла .apk
на Android-телефон. Единственное, что было связано с использованием Dalvik VM
. И теперь мне интересно, как процесс установки точно такой же, как и с ART
? Каковы различия? Я имею в виду работы PackageManager, пути, Convertion в dex
формате и т.д. Googling не дает много информации, только о мощности производительности, управление памятью и что-то подобное. Я был бы очень благодарен, если бы кто-то из знакомых мог поделиться этой информацией.Процесс установки .apk в пределах ART. Отличие от процесса установки Dalvik VM
ответ
Приложения для Android входят в формат файла .apk
, с Java-классами, преобразованными в DEX
bytecode. Формат байтов DEX
не зависит от архитектуры устройства и должен быть переведен на собственный машинный код для запуска на устройстве. Это то же самое и для ART
, и для времени работы Dalvik
.
Наиболее значительные изменения от Dalvik
до ART
что Dalvik
основан на Just-In-Time (JIT
) компиляции, в то время как ART
основан на вперед-оф-времени (AOT
) компиляции ,
С Dalvik JIT компилятором, каждый раз, когда приложение запускается, он динамически преобразует часть Dalvik
байткод в машинный код. По мере выполнения выполнения больше байт-кода компилируется и кэшируется. С другой стороны, АРТ оснащается компилятором «Вперед». На этапе установки приложения он статически переводит байт-код DEX
в машинный код и хранит его в хранилище устройства. Это одноразовое событие, которое происходит, когда приложение установлено на устройстве.
Performance
Самым важным преимуществом ART
выполнения над Dalvik
выполнения является то, что приложение работает быстрее на ART
. Поскольку во время установки байт-код DEX
был переведен в машинный код, для его компиляции во время выполнения не требуется дополнительного времени. Приложение также запускается быстрее, когда запускается с ART
по той же причине.
Поскольку для Dalvik
требуется дополнительная память для кеш-кода JIT
, приложение занимает меньшую площадь памяти при работе на ART
.
батарей
С Dalvi
K выполнения, JIT
компиляция CPU
оценка. Из-за AOT
компиляции ART
освобождает процессор от перевода DEX
байт-кода на машинный код во время выполнения приложения, тем самым уменьшая потребление энергии. Использование ART
приводит к увеличению времени автономной работы, что является временным интервалом, когда требуется подзарядка аккумулятора.
Установка время
Поскольку AOT
компилятора переводит DEX
байт-кода в машинный код во время установки приложения, приложение занимает больше времени, чтобы установить на устройстве с ART
выполнения. Учитывая преимущества более быстрого выполнения и более короткого времени запуска, о которых мы говорили в предыдущем разделе, это дополнительное время, которое происходит только один раз во время установки приложения, стоит того.
хранения Footprint
С ART
выполнения, AOT
компилятор переводит DEX
байткод на приложения в машинный код и сохраняет его в памяти устройства. Предварительно скомпилированный двоичный файл занимает больше места, чем байт-код DEX. Таким образом, получается больший объем памяти по сравнению с Dalvik
.
Резюме
До этого момента мы ввели новую ART
среду выполнения для Android. Мы также обсудили его преимущества и компромиссы, централизуя его компиляцию и повышение производительности. В настоящее время выпущен для предварительного просмотра и все еще находится в активной разработке и оптимизации, на данный момент мы не можем дать количественный вывод о том, сколько производительности было достигнуто при переключении на ART Runtime
. Одно можно сказать наверняка, что ART заменит Dalvik
в качестве среды выполнения Android на устройствах x86
.
Я чувствую, что вы заслуживаете большего внимания :) – logoff
В архитектуре dvm каждый раз, когда приложение запускает весь байтовый код приложения, преобразованный в dex, а затем выполняет файлы dex. Поэтому, когда каждый раз запускается то же самое, что и делается, поэтому для преодоления этой проблемы ART вступает в картину. В ART, когда во время установки приложения только конвертирует байт в Dex, а затем при каждом запуске запускают те же файлы dex, здесь не нужно требовать преобразования при каждом запуске. Таким образом, меньше времени на запуск приложения в ART по сравнению с dvm.
Для искусства нет большой разницы, кроме того, что он запускает dex2oat для создания художественного файла, а не dexopt для создания файла odex. – JesusFreke