JoJo的个人博客

记录精彩的程序人生

目录
Dalvik和ART虚拟机区别
/  

Dalvik和ART虚拟机区别

概述

Android4.4及以前使用的都是Dalvik虚拟机,Android5.0才开始使用的Android虚拟机,ART虚拟机兼容了Dalvik虚拟机的特性。

Apk在打包的过程中会先将java等源码通过javac编译成.class文件,但是我们的Dalvik虚拟机只会执行.dex文件,这个时候dx会将.class文件转换成Dalvik虚拟机执行的.dex文件。Dalvik虚拟机在启动的时候会先将.dex字节码文件转换成快速运行的机器码,又因为65535这个问题,导致我们在应用冷启动的时候有一个合包的过程,最后导致的一个结果就是我们的app启动慢,这就是Dalvik虚拟机的JIT特性(Just In Time)

ART有一个很好的特性AOT(ahead of time),这个特性就是我们在安装APK的时候就将dex字节码直接处理成可直接供ART虚拟机使用的机器码,ART虚拟机将.dex文件转换成可直接运行的.oat文件,ART虚拟机天生支持多dex,所以也不会有一个合包的过程,所以ART虚拟机会很大的提升APP冷启动速度。

总结

Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time ,JIT)转换为机器码,这会拖慢应用的运行效率。

而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,极大的提高了程序的运行效率,同时减少了手机的耗电量,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。

参考文章

Android Dalvik虚拟机和ART虚拟机对比


标题:Dalvik和ART虚拟机区别
作者:SunnySky
地址:https://www.tianyang.pub/articles/2020/06/05/1591351336600.html

评论