Изменения в среде выполнения в Android

Перейти к профилю Рохана Майти - theLimitBreaker

Привет, ребята, Android существует около десяти лет, и с тех пор Google много чего ввел в Android, улучшил, изменил и так далее. Так и с Runtime в Android.

В этом посте я расскажу о том, как менялась среда выполнения в андроиде среди версий андроида.

Прежде чем мы начнем, давайте узнаем о JIT и AOT.

JIT (точно вовремя) — Это компиляция кода «на лету» (как раз вовремя), т. е. динамически ваш код преобразуется в собственный код. JIT конвертирует выборочная часть кода по мере необходимости.

АОТ (заранее)— Заблаговременная компиляция, перед выполнением вашего приложения, оно преобразует ваш код в нативный код, чтобы машина (устройство Android) могла выполнять его нативно.

DEX-файлы — Файлы DEX — это исполняемые файлы Dalvik, которые фактически запускаются на вашем устройстве. Наш исходный код, ресурс вместе с зависимостями библиотеки скомпилирован в файл DEX (содержит байт-код DEX, который работает на устройстве Android). И затем он заархивирован в APK.

Процесс сборки

Dalvik и ART — это система времени выполнения, используемая в Android. Dalvik был средой выполнения до Lollipop, а ART — это среда выполнения от Lollipop до текущей версии. Хотя в Kitkat ART был введен, но он должен быть включен из опций разработчика, т.е. он был введен в экспериментальном порядке.

Dalvik — это виртуальная машина, оптимизированная для мобильных устройств.

При установке

Далвик Runtime

Файл Dex преобразуется в файл odex (который является оптимизированным файлом Dex) с помощью процесса dexOpt. Этот файл odex запускается на виртуальной машине Dalvik Android для воспроизведения вашего приложения. Плюс чаще часть вашего приложения (Горячий код) преобразуется в собственный код динамически (на лету), чтобы приложение могло работать лучше.

В АРТ с АОТ, в период установки весь код приложения преобразуется в собственный код . Так что это приложение может выполнять приложение изначально.

АРТ только с АОТ

Dex-файл конвертируется овсяный файл который двоичный файл для AOT (собственный код) через процесс dex2oat .Этот файл овса запускается непосредственно на устройстве . Это лучше, чем Dalvik + JIT, так как здесь приложение работает изначально, а последний каждый раз интерпретирует файл odex для воспроизведения приложения.

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

Пользователи не используют все функции приложения постоянно. Всегда есть определенная часть, которую пользователи используют в основном.

Но с помощью AOT весь код (даже часть с менее частым доступом) преобразуется в файл oat и занимает место на устройстве.

Чтобы решить проблему увеличения размера приложения на устройстве. Google вернул JIT на помощь, плюс он включает в себя профилирование.

Когда файл dex загружен, если файл oat включен, то ART запускает его напрямую, а если нет файла oat, то холодный код (код нечастого доступа) запускается интерпретатором, а горячий код — JIT.

JIT-архитектура

При первой установке файл oat не создается. Итак, здесь приложение запускается с помощью JIT (преобразует горячий код в фоновом потоке), который теперь также профилирует код (регистрирует Горячий код).

АОТ + JIT

Служба демона компиляции(Фоновая служба), которая запускает AOT. AOT берет профилированный журнал, а затем преобразует ваш горячий код (наиболее часто встречающаяся часть) в собственный код (создает файл oat) в фоновом режиме. Эта служба работает, когда ваш телефон находится в режиме ожидания или в состоянии зарядки, чтобы сэкономить заряд батареи.

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

Ну вот как текущая рантайм в андроиде (AOT+JIT) и все. Надеюсь вам понравился пост.

Сайонара!!

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *