Dalvik和ART都是Android虚拟机的一种实现方式,它们的主要区别在于执行字节码的方式不同。
1. Dalvik虚拟机:Dalvik虚拟机是Android 4.4及之前版本中默认的虚拟机。它使用的是即时编译(Just-In-Time Compilation,JIT)的方式来执行字节码。在应用程序运行时,Dalvik会将字节码转换成机器码并直接执行,这样可以提高应用程序的运行效率。但是,每次运行应用程序时都需要进行即时编译的过程,会导致应用程序启动较慢。
2. ART虚拟机:ART虚拟机是Android 5.0及之后版本中默认的虚拟机。它使用的是预编译(Ahead-Of-Time Compilation,AOT)的方式来执行字节码。在应用程序安装时,ART会将字节码预先编译成机器码,并保存在设备中。这样,在应用程序运行时就可以直接执行机器码,而不需要进行即时编译的过程。这种方式可以提高应用程序的启动速度和运行效率,但是会占用更多的存储空间。
总结来说,Dalvik虚拟机使用即时编译的方式执行字节码,启动较慢但运行效率高,而ART虚拟机使用预编译的方式执行字节码,启动速度快但需要占用更多的存储空间。在Android 7.0之后,ART虚拟机还引入了Just-In-Time编译器(JIT Compiler),可以在运行时对部分代码进行即时编译,以提高运行效率。