Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Android Runtime (ART) и Dalvik

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

ART и Dalvik являются совместимыми средами исполнения с байт-кодом Dex, поэтому приложения, разработанные для Dalvik, должны работать при работе с ART. Однако некоторые методы, которые работают на Dalvik, не работают на ART. Для получения информации о наиболее важных проблемах см. Проверка поведения приложения в среде выполнения Android (ART) .

АРТ Особенности

Вот некоторые из основных функций, реализованных в ART.

Опережающая (AOT) компиляция

ART представляет опережающую компиляцию (AOT), которая может улучшить производительность приложения. ART также имеет более жесткую проверку во время установки, чем Dalvik.

Во время установки ART компилирует приложения, используя инструмент dex2oat на устройстве. Эта утилита принимает DEX- файлы в качестве входных данных и генерирует исполняемый файл скомпилированного приложения для целевого устройства. Утилита должна иметь возможность без проблем скомпилировать все действительные файлы DEX. Однако некоторые инструменты постобработки создают недопустимые файлы, которые могут быть допущены Dalvik, но не могут быть скомпилированы ART. Для получения дополнительной информации см. Решение проблем со сборкой мусора .

Улучшенная сборка мусора

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

  • Одна GC пауза вместо двух
  • Параллельная обработка во время оставшейся паузы GC
  • Коллектор с меньшим общим временем GC для особого случая очистки недавно выделенных, недолговечных объектов
  • Улучшенная эргономика сборки мусора, что делает одновременные сборки мусора более своевременными, что делает события GC_FOR_ALLOC чрезвычайно редкими в типичных случаях использования
  • Сжатие GC для уменьшения использования фоновой памяти и фрагментации

Улучшения разработки и отладки

ART предлагает ряд функций для улучшения разработки и отладки приложений.

Поддержка выборочного профилировщика

Исторически разработчики использовали инструмент Traceview (предназначенный для отслеживания выполнения приложения) в качестве профилировщика. Хотя Traceview предоставляет полезную информацию, его результаты в Dalvik были искажены из-за накладных расходов на вызов метода, и использование инструмента заметно влияет на производительность во время выполнения.

ART добавляет поддержку специального профилировщика выборки, который не имеет этих ограничений. Это дает более точное представление о выполнении приложения без значительного замедления. Поддержка пробоотбора была добавлена ​​в Traceview для Dalvik в выпуске KitKat.

Поддержка дополнительных функций отладки

ART поддерживает ряд новых опций отладки, особенно в отношении функций мониторинга и сбора мусора. Например, вы можете:

  • Посмотрите, какие блокировки удерживаются в следах стека, затем перейдите к потоку, который содержит блокировку.
  • Спросите, сколько существует живых экземпляров данного класса, попросите просмотреть экземпляры и посмотреть, какие ссылки поддерживают работу объекта.
  • Фильтровать события (например, точки останова) для конкретного экземпляра.
  • Посмотрите значение, возвращаемое методом при выходе (используя события «method-exit»).
  • Установите точку наблюдения поля, чтобы приостановить выполнение программы, когда к конкретному полю обращаются и / или изменяют.

Улучшена детализация диагностики в отчетах об исключениях и сбоях

ART дает вам как можно больше контекста и деталей при возникновении исключений во время выполнения. ART предоставляет расширенную информацию об исключениях для java.lang.ClassCastException , java.lang.ClassNotFoundException и java.lang.NullPointerException . (Более поздние версии Dalvik предоставили расширенную информацию об исключениях для java.lang.ArrayIndexOutOfBoundsException и java.lang.ArrayStoreException , которые теперь включают размер массива и смещение вне пределов, и ART также делает это.)

Например, java.lang.NullPointerException теперь показывает информацию о том, что приложение пытается сделать с нулевым указателем, например поле, в которое приложение пытается записать, или метод, который оно пытается вызвать. Вот несколько типичных примеров:

java.lang.NullPointerException: Attempt to write to field 'int
android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
reference
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object reference

ART также предоставляет улучшенную контекстную информацию в собственных отчетах о сбоях приложений, включая информацию как о Java, так и о собственном стеке.

Сообщение о проблемах

Если вы столкнетесь с какими-либо проблемами, не связанными с проблемами JNI приложения, сообщите о них через Android Open Source Project Tracker . Включите adb bugreport и ссылку на приложение в магазине Google Play, если он доступен. В противном случае, если возможно, прикрепите APK, который воспроизводит проблему.