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.