ART是虚拟机么?
2026/6/27 5:19:40 网站建设 项目流程

是的,ART(Android Runtime)在本质上仍然是一个“虚拟机”(Virtual Machine),但它是一个高度进化、打破了传统概念的现代虚拟机

Google 之所以把它命名为Runtime(运行环境)而不是继续叫 VM(比如之前的 Dalvik VM),是为了强调它的运行机制已经和传统的虚拟机有了本质的区别。

我们可以从以下两个方面来透彻理解“为什么它是虚拟机”以及“为什么它又不仅仅是虚拟机”:

一、 为什么说 ART 本质上还是一个虚拟机?

在计算机科学中,虚拟机的核心职责是为代码提供一个独立于硬件的、受管理的运行环境。从这个角度看,ART 完美履行了虚拟机的四大核心职责:

  1. 硬件抽象:不管你的手机芯片是 ARM 架构(高通、联发科)还是 x86 架构,开发者只需要编译出统一的.dex字节码,ART 负责将它转化为对应芯片能看懂的指令。
  2. 内存管理(垃圾回收 GC):这是虚拟机的标志性功能。在 C/C++ 开发中,程序员需要手动释放内存;而在安卓中,ART 内部有一个强大的“垃圾回收器”,它会全自动监测并回收那些不再使用的内存,防止 App 内存泄漏。
  3. 线程管理:App 内部的多线程并发、锁机制等,都是由 ART 虚拟机在底层进行调度和分配的。
  4. 异常处理与安全机制:如果 App 代码里出现了空指针,是 ART 拦截了这个错误并抛出异常(Exception),防止整个手机底层系统直接崩溃。

二、 为什么 Google 叫它 "Runtime"(运行环境)而不是 "VM"?

传统的虚拟机(如早期的 Java 虚拟机 JVM 或安卓早期的 Dalvik 虚拟机),主要工作方式是**“解释执行”或者“即时编译(JIT)”**。

  • 传统虚拟机的做法:程序运行的时候,虚拟机就像一个**“同声传译员”**,读一句字节码,翻译成一句机器码,然后再交给 CPU 执行。这种方式的缺点是:翻译过程会拖慢运行速度,且极其耗电

而 ART 打破了这种“同声传译”的模式,它引入了AOT(Ahead-Of-Time,提前编译)技术:

  • ART 的做法:在 App 安装时,或者在手机闲置充电时,ART 会提前把那些.dex字节码彻底翻译(编译)成了手机 CPU 能直接执行的底层机器码(.oat 文件)
  • 当你打开 App 时,CPU 实际上是在直接运行原生的机器码,此时的 ART 已经不需要再做“同声传译”的工作了,它退居幕后,只负责提供内存分配、垃圾回收等“后勤保障”服务。

一句话总结区别:
传统的虚拟机重点在于**“一边运行一边翻译”;而 ART 相当于把代码“提前变成了原生程序”,它提供的是这些原生程序运行所需的“整体环境(Runtime)”**。

三、 形象的比喻

如果把运行代码比作**“给外国老板(CPU)念一份中文报告(代码)”**:

  • Dalvik 虚拟机(传统 VM):就像一个现场翻译官。老板听报告时,翻译官看着中文,脑子里翻译成英文再念给老板听。老板听得慢,翻译官也很累(费电、卡顿)。
  • ART 运行环境(现代 VM):就像一个贴心的秘书团队。在老板开会前(App安装或闲置时),秘书团队已经熬夜把中文报告提前翻译并打印成了极其标准的英文版(AOT 提前编译)。开会时,老板直接自己看英文报告(执行机器码),速度飞快。而秘书团队(ART)此时只需要站在旁边端茶倒水、打扫卫生(垃圾回收、内存管理)就可以了。

结论

ART 绝对具备虚拟机的完整血统和核心功能,只是它通过引入 AOT 提前编译技术,摆脱了传统虚拟机“运行效率低下”的帽子,成为了一个深度融入安卓系统底层的高性能运行环境。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询