Android系统作为移动端主流平台,其高效的虚拟机无疑是其核心竞争力之一。今天,就让我们一起剥开Dalvik和ART虚拟机的外衣,深入解析它们的工作原理和优缺点,帮助你全面把握Android系统的运行机制。
正文导览
- Dalvik和ART虚拟机的发展历程
- Dalvik虚拟机的工作原理和特点
- ART虚拟机的工作原理和优势
- 两者的性能和效率对比分析
- 如何根据需求选择合适的虚拟机
一、Dalvik和ART的发展历史
1、 Dalvik孕育与兴起
Dalvik在2007年随着Android平台的发布而首次亮相,并在随后的几年中不断更新和改进。
它基于开源的Java虚拟机,但做了很多改进和优化,专门为搭载有限资源的移动设备量身定制,如:
- Register-based执行,减少内存占用
- .dex字节码格式,减小APK体积
- JIT即时编译器,提升运行效率
Dalvik虚拟机(DVM)与传统的Java虚拟机(JVM)有几个关键的区别:
- 设计目标:Dalvik被设计为适合移动设备,具有较低的内存占用和高效的电池使用。
- 执行格式:Dalvik使用
.dex
文件格式,这是从Java字节码转换而来的一种压缩形式,专为Dalvik优化。 - 垃圾回收:Dalvik采用了一套适合移动设备的垃圾回收机制,以适应有限的资源。
(1)、Dalvik的主要功能和作用包括
- 执行Android应用程序:Dalvik虚拟机执行
.dex
格式的应用程序代码。 - 内存管理:Dalvik提供了一套适合移动设备的内存管理策略。
- 垃圾回收:Dalvik的垃圾回收机制优化了移动设备的资源使用。
(2)、Dalvik的优点
-
资源占用低:Dalvik设计时考虑了移动设备的资源限制,占用较少的内存和处理能力。
-
灵活性:Dalvik允许更多的定制和优化,以适应不同的硬件和软件环境。
(3)、Dalvik的缺点
-
性能限制:由于依赖运行时编译,Dalvik的性能可能不如AOT编译的ART。
-
内存管理:虽然针对移动设备进行了优化,但在某些情况下,Dalvik的内存管理可能不如ART高效。
2 、ART继任登场
伴随硬件性能的飞速提升,Dalvik的一些先天缺陷逐渐凸显,主要表现为应用启动缓慢、无法实现应用级别的JIT等。为了持续提升性能,Google从Android 4.4开始引入全新的ART虚拟机。
ART本质上是一款Ahead-Of-Time (AOT)编译器,它在应用安装时就预先编译字节码为机器码,这使得应用的启动和运行速度都得到极大提升。Android 8.0及更高版本已经将ART设为默认虚拟机。
(1)、ART的主要改进包括
- Ahead-of-Time(AOT)编译:ART采用了AOT编译技术,将应用程序代码在安装时编译成机器码,从而提高了执行效率。
- 性能提升:由于AOT编译,ART在运行时不需要进行即时编译(JIT),这减少了运行时的开销,提高了性能。
- 内存管理:ART改进了内存分配和垃圾回收机制,提供了更好的内存管理。
(2)、ART的主要功能和作用包括
- AOT编译:ART在安装时将应用程序代码编译成机器码,提高了启动速度和运行效率。
- 性能优化:ART通过减少运行时编译的需要,提高了应用程序的性能。
- 内存管理:ART提供了改进的内存管理机制,包括更有效的垃圾回收。
(3)、ART的优点
-
性能提升:ART通过AOT编译提供了更好的性能。
-
内存管理:ART的内存管理更为高效,特别是在处理大型应用程序时。