ART与Dalvik 的区别

ART与Dalvik 的区别

Android 4.4之后使用了ART虚拟机替换了Dalvik虚拟机,其中的原理以及优劣势是什么呢?

前言

ART

Android 4.4提供了一种与Dalvik截然不同的运行环境ART支持,ART源于google收购的Flexycore的公司。
ART模式与Dalvik模式最大的不同在于,启用ART模式后,系统在安装应用的时候会进行一次预编译,将字节码转换为机器语言存储在本地,
这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。
ART代表Android Runtime,其处理应用程序执行的方式完全不同于DalvikDalvik是依靠一个Just-In-Time (JIT)编译器去解释字节码。
开发者编译后的应用代码需要通过一个解释器在用户的设备上运行,这一机制并不高效,但让应用能更容易在不同硬件和架构上运行。
ART则完全改变了这套做法,在应用安装时就预编译字节码到机器语言,这一机制叫Ahead-Of-Time(AOT)编译。
在移除解释代码这一过程后,应用程序执行将更有效率,启动更快。总体的理念就是空间换时间。

Dalvik

DalvikGoogle公司自己设计用于Android平台的Java虚拟机。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,
.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,
并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。

AOT的编译器分两种模式:

  • 在开发机上编译预装应用;
  • 在设备上编译新安装的应用,在应用安装时将dex字节码翻译成本地机器码。

ART优点:

  • 系统性能的显著提升。
  • 应用启动更快、运行更快、体验更流畅、触感反馈更及时。
  • 更长的电池续航能力。
  • 支持更低的硬件。

ART缺点:

  • 更大的存储空间占用,可能会增加10%-20%。
  • 更长的应用安装时间。

结语

工作原因,也有自己的原因好久没更新博客,此次带来关于中国地图的svg的自定义view,希望能给我提出文章的不足或者漏洞,以此共勉!