Android · 3 / 5

ART, DEX и осмысленные замеры

AOT/JIT, Baseline Profiles, ANR и достижимость объектов

Что выполняет Android

В обычном Android-проекте Kotlin/JVM и Java проходят через class-файлы к DEX. D8 выполняет dexing; оптимизирующая сборка использует R8. ART исполняет DEX с сочетанием интерпретации, JIT и AOT, зависящим от версии и профилей. На Android 7+ ART включает JIT; формула «ART всегда только AOT» устарела. AOSP: JIT в ART, D8.

Профиль задаёт приоритет, а не исправляет алгоритм

Baseline Profile описывает важные пути приложения для предварительной компиляции. Он может сократить стоимость старта и взаимодействий, но не устранит блокирующий запрос на Main или квадратичный алгоритм. Сравнивайте release-сборки, одинаковые сценарии и состояние компиляции. Debug Compose не даёт честного сравнения с оптимизированным Views-приложением. Baseline Profiles.

От симптома к причине

ANR — нарушение временного требования системы; порог зависит от вида операции, а не всегда равен пяти секундам. При диагностике изучайте стек Main, ожидание блокировок, Binder и нагрузку CPU. Главный поток может ждать работу другого потока и всё равно не отвечать. Диагностика ANR.

Утечка — нежелательная достижимость объекта от долгоживущего владельца. Сборщик не может угадать, что сохранённая Activity больше не нужна. Замена сильной ссылки на WeakReference не заменяет правильную отписку и срок жизни. Управление памятью Android.

Практический порядок

Сформулируйте метрику, воспроизведите задержку, снимите trace, исправьте подтверждённую причину и повторите тот же сценарий. Ускорение одного запуска не является гарантией для всех устройств.

Отбор: draft/android.md, draft/M++.md; статья об Android Runtime из draft/LINKS.txt использована как список направлений для проверки по AOSP.

К вопросам →