Android虚拟机Dalvik
Dalvik与JVM的区别
Dalvik是Android独有的虚拟机。
Dalvik对比JVM,将JVM里面的栈帧里面的局部变量表和操作数栈合并了。
Dalvik Android2.2版本 JIT(just in time)
JIT即使变异,将.dex文件信息读成机器码,但编译好的机器码是临时的而不是永久的。
ART Dalvik升级版 Android5.0之后出现
将.dex文件在用户安装APK的时候将代码进行AOT编译变成机器码,因此Android5.0系统之后,在安装应用时,时间增加了许多。
但是在7.0之后,ART技术更新了,在安装APK的时候,不生产机器码,又回到了Dalvik安装时候的样子,但是在程序运行过程中,会进行JIT操作,通过JIT编译过的方法会存入Profile配置文件中(该文件只做记录,并不是实际的机器码),当用户处于空闲时,会进行AOT编译,读出Profile配置文件中的记录信息,根据记录信息会生产一个base.art文件,里面是之前已经执行过的文件所编译的机器码,下次打开APP如果base.art文件里面有之前的文件信息,那么久可以直接从base.art拿来用,因为已经提前加载好了,不用再通过.dex文件再去编译持续,以此来提高效率。