DVM 和 JVM的区别
1、DVM基于寄存器,JVM基于栈。 DVM效率要更高
解释为什么寄存器效率更高?
a、 因为寄存器是CPU中的一部分, 堆栈是内存的一种结构。 内存是CPU和硬盘之间的通道。 寄存器是CPU的储存器,速度快。
b、 一个是直接对CPU进行操作,一个是对内存操作,然后在转化成CPU指令操作。所以寄存器效率更快。
2、DVM 运行dex JVM运行java字节码
DVM 和 ART的区别
1、 Dalvik虚拟机 的编译模式是 JIT是,一种运行时编译, 每次在打开应用的时候都要重新去编译。
2、 ART 虚拟机 的编译模式是AOT,它是预编译,在应用安装的时候会启动 dex2oat过程,直接把dex编译为ELF文件,以后在执行APP的时候不用编译了,效率更高
AOT 和 JIT 是对应的编译模式而已。
优缺点:
1、Dalvik 安装快,体积小,但是每次运行APP都要编译, 每次编译特别耗电
2、ART安装慢,体积大,多余10%-20%, 但是每次运行APP直接读取本地机器码,效率快,不用每次编译 比较省电
AOT编译时机
-
随Android ROM构建时一起编译
-
程序安装时进行编译(针对第三方应用)
发展史:
Android 2.2 使用DVM虚拟机
Android 4.4 推出ART虚拟机
Android 5.0 全面替换ART
Android7.0 仍是ART环境,但是编译策咯改为AOT 和 JIT 混合编译。 </