ART与Dalvik
Dalvik
Dalvik是Google公司自己设计用于Android平台的Java虚拟机。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,
并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
很长时间以来,Dalvik虚拟机一直被用户指责为拖慢安卓系统运行速度不如IOS的根源。2014年6月25日,Android L正式亮相于召开的谷歌I/O大会,Android L改动幅度较大,谷歌将直接删除Dalvik,代替它的是传闻已久的ART。
ART
Android 4.4提供了一种与Dalvik截然不同的运行环境ART支持,ART源于google收购的Flexycore的公司。ART模式与Dalvik模式最大的不同在于,启用ART模式后,系统在安装应用的时候会进行一次预编译,将字节码转换为机器语言存储在本地,
这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。
ART使用AOT(Ahead Of Time)(静态编译)而Dalvik使用JIT(Just In Time)(动态编译)JIT方式会在程序执行时将Dex bytecode(java字节码)转换为处理器可以理解的本地代码,这种方式会将编译时间计入程序的执行时间,程序执行会显得慢一些。AOT方式会在程序执行之前(一般是安装时)就编译好本地代码,因此程序执行时少了编译的过程会显得快一些,但占用更多存储空间,安装时也会更慢。但没针对ART优化的程序反而会运行得更慢,随着Android L的普及这个问题迟早会解决。ART拥有改进的GC(垃圾回收)机制:GC时更少的暂停时间、GC时并行处理、某些时候Collector所需时间更短、减少内存不足时触发GC的次数、减少后台内存占用。
在移除解释代码这一过程后,应用程序执行将更有效率,启动更快。总体的理念就是空间换时间。
AOT的编译器分两种模式:
- 在开发机上编译预装应用;
- 在设备上编译新安装的应用,在应用安装时将
dex字节码翻译成本地机器码。
ART优点:
- 系统性能的显著提升。
- 应用启动更快、运行更快、体验更流畅、触感反馈更及时。
- 更长的电池续航能力。
- 支持更低的硬件。
ART缺点:
- 更大的存储空间占用,可能会增加10%-20%。
- 更长的应用安装时间。
来源:CSDN
作者:DrogoZhang
链接:https://blog.csdn.net/weixin_40400177/article/details/103587220