在 Android 生态系统的演进历程中,运行时环境的变革是推动其性能与体验飞跃的核心动力之一,Android Runtime(ART)的引入,标志着一个全新时代的到来,它彻底取代了早期的 Dalvik 虚拟机,成为了现代 Android 设备上执行应用代码的基石,为用户带来了更流畅、更高效、更省电的使用体验。
从 Dalvik 到 ART 的根本性转变
要理解 ART 的重要性,必须先了解它的前身——Dalvik 虚拟机,在 Android 5.0 Lollipop 之前,所有应用都运行在 Dalvik 上,Dalvik 采用的是 JIT(Just-In-Time,即时编译)技术,当一个应用启动时,Dalvik 会逐条解释应用的字节码(.dex 文件),并在运行过程中,将频繁执行的代码(热点代码)动态编译成设备的本地机器码,以提升后续执行效率。
这种模式的优点是应用安装速度快、占用存储空间小,因为安装时只需要存储字节码,但其缺点也同样明显:
- 启动延迟:应用首次启动或冷启动时,解释执行和即时编译的过程会消耗时间,导致界面卡顿。
- 运行时开销:JIT 编译器本身会占用 CPU 资源和内存,在运行时持续进行编译和分析,影响整体性能并消耗电量。
- 性能不确定性:编译过程依赖于运行时的代码执行情况,性能优化效果具有不确定性。
为了解决这些问题,Google 推出了 ART,ART 带来了一场革命性的改变,它采用了 AOT(Ahead-Of-Time,预先编译)技术。
ART 的核心机制:预先编译(AOT)
与 Dalvik 的 JIT 截然不同,ART 的工作原理是在用户安装应用时,就将应用的字节码一次性、完整地编译成针对设备架构的本地机器码(ARM 或 x86 指令集),这个编译产物被称为 OAT(Executable and Linkable Format)文件。
这一根本性的转变带来了立竿见影的优势: