Java虚拟机原理(下)-Dalvik vs ART-探秘Android虚拟机内在机制


Android系统作为移动端主流平台,其高效的虚拟机无疑是其核心竞争力之一。今天,就让我们一起剥开Dalvik和ART虚拟机的外衣,深入解析它们的工作原理和优缺点,帮助你全面把握Android系统的运行机制。


正文导览

  1. Dalvik和ART虚拟机的发展历程
  2. Dalvik虚拟机的工作原理和特点
  3. ART虚拟机的工作原理和优势
  4. 两者的性能和效率对比分析
  5. 如何根据需求选择合适的虚拟机

一、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的内存管理更为高效,特别是在处理大型应用程序时。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w风雨无阻w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值