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文件再去编译持续,以此来提高效率。

posted @ 2020-11-22 21:39  金大人的梦  阅读(317)  评论(0编辑  收藏  举报