Dalvik虚拟机存在于Android系统,JVM是java虚拟机,两者都是虚拟机。
1. Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。
2.Dalvik执行.dex格式的字节码,而JVM执行.class格式的字节码。
3.Dalvik 和 Java SDK的SDK不同。
4.Dalvik 和 Java 运行环境的区别 :Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。Dalvik虚拟机在android2.2之后使用JIT (Just-In-Time)技术,与传统JVM的JIT并不完全相同。
5.Dalvik虚拟机有自己的 bytecode,并非使用 Java bytecode。
ART模式英文全称为:Android runtime,谷歌Android 4.4系统新增的一种应用运行模式,ART模式可让系统体验更加流畅,在安卓5.0系统及以上中ART已经取代Dalvik成为默认选项。
虚拟机Dalvik通过一个叫JIT(Just-in-time)的解释器动态的进行编译并执行,这一过程也拖慢了运行效率。而且在每次执行应用的时候Dalvik虚拟机都会将程序的语言由高级语言编译为机器语言,在每次运行应用时都需要一次编译,这样程序的执行效率大大下降。
ART模式与Dalvik模式最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。