Android-среда выполнения
Разработчик(и) | |
---|---|
Репозиторий | андроид |
Написано в | С , С++ |
Операционная система | Андроид |
Входит в комплект | Андроид |
Предшественник | Далвик |
Тип | Среда выполнения |
Лицензия | Лицензия Апач 2.0 [1] |
Веб-сайт | источник |
Android Runtime ( ART ) — это среда выполнения приложений, используемая Android операционной системой . Заменяя Dalvik , виртуальную машину процесса, первоначально использовавшуюся в Android, ART выполняет перевод приложения байт-кода в собственные инструкции , которые позже выполняются средой выполнения устройства. [2]
Обзор [ править ]
В Android 2.2 «Froyo» в Dalvik была реализована JIT-компиляция на основе трассировки , оптимизирующая выполнение приложений за счет постоянного профилирования приложений при каждом их запуске и динамической компиляции часто выполняемых коротких сегментов их байт-кода в собственный машинный код . В то время как Dalvik интерпретирует остальную часть байт-кода приложения, собственное выполнение этих коротких сегментов байт-кода, называемых «трассами», обеспечивает значительное повышение производительности. [3] [4]
В отличие от Dalvik, ART использует предварительную компиляцию (AOT) путем компиляции целых приложений в собственный машинный код после их установки. Устранив интерпретацию Dalvik и JIT-компиляцию на основе трассировки, ART повышает общую эффективность выполнения и снижает энергопотребление, что приводит к увеличению автономности аккумулятора на мобильных устройствах . В то же время ART обеспечивает более быстрое выполнение приложений, улучшенные распределения памяти и сборки мусора механизмы (GC), новые функции отладки приложений и более точное высокоуровневое профилирование приложений. [2] [5] [6]
Для обеспечения обратной совместимости ART использует тот же входной байт-код, что и Dalvik, предоставляемый через стандартные файлы .dex как часть файлов APK , а файлы .odex заменяются исполняемыми файлами в исполняемом и связываемом формате (ELF). После компиляции приложения с помощью встроенного в устройство ART утилита dex2oat , она запускается исключительно из скомпилированного исполняемого файла ELF; в результате ART устраняет различные накладные расходы на выполнение приложений, связанные с интерпретацией Dalvik и JIT-компиляцией на основе трассировки. Недостатком ART является то, что при установке приложения требуется дополнительное время для компиляции, а приложения занимают немного больше вторичной памяти (обычно флэш-памяти ) для хранения скомпилированного кода. [2] [5] [6]
История [ править ]
В Android 4.4 «KitKat» представлена предварительная версия технологии ART как альтернативной среды выполнения Dalvik, которая оставалась виртуальной машиной по умолчанию. [7] [8] В последующем основном выпуске Android, Android 5.0 «Lollipop» , Dalvik был полностью заменен на ART.
Android 7.0 «Nougat» заменил свою среду выполнения Java с прекращенной версии Apache Harmony на OpenJDK , представив JIT-компилятор с профилированием кода для ART, который позволяет постоянно улучшать производительность приложений Android во время их работы. [9] JIT-компилятор дополняет компилятор AOT компании ART, помогая повысить производительность во время выполнения и сэкономить место для хранения за счет определения «горячего кода» (кода, который часто используется, выполняется в потоке пользовательского интерфейса или влияет на время запуска), который компилятор AOT компилирует в машинный код, пока устройство находится в режиме ожидания и заряжается. Менее часто используемый код основан на JIT-компиляции. [10] [11]
В Android 9 «Pie» уменьшен объем памяти, используемый APK-файлами за счет использования сжатых файлов байт-кода , а данные профилировщика можно загружать на серверы Google Play для объединения с приложениями при загрузке пользователями с аналогичным устройством, что сокращает время загрузки из Google Play. до 40%. Облачные профили Google Play позволяют оптимизировать приложения при установке, что помогает избежать первоначальных проблем с производительностью, присутствующих в Android 7.0–8.1. [12]
В июле 2021 года [13] была введена концепция базовых профилей. Базовые профили — это профили ART, которые определяют методы и классы, которые должны подвергаться компиляции AOT при первом запуске приложения и совместимы с Android 7.0 и более поздних версий. Они предоставляют функциональность, аналогичную облачным профилям Google Play в Android 9, когда они недоступны, и автоматически объединяются с облачными профилями, когда они доступны. [14]
ART был обновлен новым сборщиком мусора (GC), использующим Linux userfaultfd системный вызов в Android 13 . [15] [16] [17] Это уменьшает нагрузку на память, размер скомпилированного кода и количество ошибок , а также предотвращает риск закрытия приложений из-за нехватки памяти во время сборки мусора . [17] Другие изменения также улучшают запуск приложений, уменьшают количество зависаний и повышают производительность. [17] В рамках проекта Mainline также будет обновлен Android 12 ART. [15]
См. также [ править ]
- Разработка программного обеспечения для Android — различные концепции и утилиты разработки программного обеспечения, используемые для создания приложений для Android.
- История версий Android — история и описания выпусков Android, перечисленные в основном по их официальным уровням API.
- Сравнение программного обеспечения для виртуализации приложений - различные портативные виртуальные машины и виртуальные машины на языке сценариев.
- Виртуальная машина – эмуляция определенной компьютерной системы с разной степенью реализованного функционала.
Ссылки [ править ]
- ^ «ВНИМАНИЕ – платформа/искусство – Git в Google» . Архивировано из оригинала 4 марта 2023 года . Проверено 25 июня 2021 г.
- ^ Jump up to: Перейти обратно: а б с Андрей Фрумусану (1 июля 2014 г.). «Более пристальный взгляд на Android RunTime (ART) в Android L» . АнандТех . Архивировано из оригинала 5 июля 2014 года . Проверено 5 июля 2014 г.
- ^ Бен Ченг; Билл Бузби (май 2010 г.). «JIT-компилятор для Dalvik VM Android» (PDF) . android-app-developer.co.uk . Google . стр. 5–14. Архивировано из оригинала (PDF) 6 ноября 2015 года . Проверено 18 марта 2015 г.
- ^ Фил Никинсон (26 мая 2010 г.). «Разработчик Google Android объясняет больше о Dalvik и JIT во Froyo» . androidcentral.com . Архивировано из оригинала 8 апреля 2017 года . Проверено 8 июля 2014 г.
- ^ Jump up to: Перейти обратно: а б «Разработчики Android: ART и Dalvik» . источник.android.com . 9 марта 2015 года. Архивировано из оригинала 15 марта 2015 года . Проверено 18 марта 2015 г.
- ^ Jump up to: Перейти обратно: а б «Разработчики Android: настройка ART – как работает ART» . источник.android.com . 9 марта 2015 года . Проверено 18 марта 2015 г.
- ^ Шон Бакли (6 ноября 2013 г.). « Эксперимент «ART» в Android KitKat увеличивает время автономной работы и ускоряет работу приложений» . Engadget . Архивировано из оригинала 27 января 2017 года . Проверено 5 июля 2014 г.
- ^ Дэниел П. (7 ноября 2013 г.). «Экспериментальная среда выполнения Google ART в Android KitKat может обеспечить вдвое более быстрое выполнение приложений» . phonearena.com . Архивировано из оригинала 7 июля 2014 года . Проверено 5 июля 2014 г.
- ^ «Android 7.0 для разработчиков» . Android-разработчики . Проверено 22 марта 2021 г.
- ^ Амадео, Рон (22 августа 2016 г.). «Обзор Android 7.0 Nougat: делайте больше на своем гигантском смартфоне» . Арс Техника . Проверено 5 апреля 2023 г.
- ^ «Реализация JIT-компилятора ART» . источник.android.com . 22 января 2017 года. Архивировано из оригинала 8 августа 2023 года . Проверено 22 января 2017 г.
- ^ Амадео, Рон (13 сентября 2018 г.). «Android 9 Pie, тщательно проверенный» . Арс Техника . Архивировано из оригинала 30 ноября 2018 года . Проверено 16 августа 2022 г.
- ^ «Установщик профиля | Джетпак» . Android-разработчики . Архивировано из оригинала 8 августа 2023 года . Проверено 5 июля 2023 г.
- ^ Семенова Катерина; Равикумар, Рахул; Крейк, Крис (28 января 2022 г.). «Улучшение производительности приложений с помощью базовых профилей» . Блог разработчиков Android . Архивировано из оригинала 8 августа 2023 года . Проверено 5 июля 2023 г.
- ^ Jump up to: Перейти обратно: а б Гидра, Локеш, Что нового в производительности приложения , заархивировано из оригинала 16 августа 2022 г. , получено 16 августа 2022 г.
- ^ Гидра, Локеш; Бём, Ханс-Дж.; Фернандес, Жоэл (12 октября 2020 г.). «Использование системного вызова Linux Userfaultfd на этапе сжатия процесса сборки мусора» . Серия оборонительных публикаций . Архивировано из оригинала 16 августа 2022 года . Проверено 16 августа 2022 г.
- ^ Jump up to: Перейти обратно: а б с «Android 13 находится в AOSP!» . Блог разработчиков Android . Архивировано из оригинала 15 августа 2022 года . Проверено 16 августа 2022 г.
Внешние ссылки [ править ]
- Официальный сайт
- Основы Android 101: понимание ART, среды выполнения Android на YouTube , XDA Developers , 12 февраля 2014 г.
- ART: Android’s Runtime Evolved на YouTube, Google I/O 2014, Анвар Гулум, Брайан Карлстром и Ян Роджерс
- JIT-компилятор для виртуальной машины Android Dalvik на YouTube, Google I/O 2010, авторы: Бен Ченг и Билл Бузби.
- Обеспечение высокооптимизированной среды выполнения Android (ART) и среды выполнения веб-страниц на базе архитектуры Intel , Intel , 4 августа 2015 г., Хайтао Фэн и Джонатан Дин
- Android 7.1 для разработчиков: JIT/AOT-компиляция на основе профиля , Android Developers, описывает изменения ART в Android 7.1.