先把结论放在前面:Dalvik 是 JIT 为主(安装快、运行靠预热),现代 ART 是 JIT + AOT + profile 引导的混合模式——安装时预编译热路径,运行中继续对热点做 JIT,必要时后台重编译。这题的骨架是"三代运行时的演进 + 三种编译模式的分工 + profile 的作用 + 可调试性差异"。面试里这题属于"能筛出真懂编译的人"的题。答得浅的是"ART 是 Dalvik 的替代品,运行更快";答得深的是能讲清 AOT 的安装期成本、profile 如何被采集与下发、Baseline Profile 为什么能改善首启,以及 AOT 对代码可调试性的影响。三代运行时的定位对照维度DalvikART(Android 5~6)ART(Android 7+ 现代)编译策略JIT全量 AOTAOT + JIT + profile 引导dex 产物classes.dexbase.apk+base.oatbase.apk+base.vdex/oat
阅读完成 · 觉得有帮助?