androiddalvik
① 说一说Android的Dalvik,ART与JIT,AOT
Dalvik、ART、JIT与AOT的概述如下:
Dalvik:
- 定义:Dalvik是Android系统初期使用的Java虚拟机,负责将dex文件翻译为机器码交予系统调用。
- 特点:在每次执行代码时,Dalvik都需要将操作码代码转换为微处理器指令,这导致了运行效率低下。
ART:
- 定义:ART是Google在Android 4.4版本中推出的全新虚拟机运行环境,旨在替代Dalvik。
- 特点:ART采用静态编译方式,在应用安装时启动dex2oat过程,将dex预编译成ELF文件。这样,每次运行程序时就不需重新编译,从而提高了运行效率。
JIT:
- 定义:JIT是一种编译策略,旨在提高应用程序的运行效率。
- 特点:在Dalvik虚拟机中,JIT编译器会在应用程序运行时,对遇到的新类进行即时编译。编译后的代码被优化为精简的原生型指令码,使得下次执行到相同逻辑时速度更快。JIT编译器可以对执行频繁的dex和odex代码进行编译与优化。
- 局限性:虽然JIT可以优化Dalvik的运行速度,但将dex翻译为本地机器码依然占用时间。
AOT:
- 定义:AOT是与JIT相对的另一种编译策略,主要在应用安装时进行预编译。
- 特点:AOT在ART虚拟机中被广泛采用,通过在应用安装时将dex预编译成ELF文件,使得每次运行程序时不需重新编译。AOT/JIT混合编译策略在Android 7.0版本中被采用,结合了AOT的预编译优势和JIT的运行时优化能力,从而实现更好的性能和效率。
综上所述,Dalvik和ART是Android的两种主要虚拟机类型,而JIT和AOT则是为了提高运行效率而采用的不同编译策略。
② Android系统中的运行时ART和Dalvik有什么区别
Android系统中的运行时ART和Dalvik有什么区别?
Android系统作为全球最受欢迎的移动操作系统之一,已经成为手机和平板电脑市场的主导者。Android系统的优势之一是其良好的兼容性和可定制性,并提供了多种运行时环境,如Dalvik和ART。在这两种运行时环境之间,有什么区别呢?
Dalvik和ART
在Android系统中,Dalvik和ART是两种不同的运行时环境。Dalvik运行时是Android系统中早期版本的默认运行时,而ART则从Android4.4版本开始作为默认运行时环境。两者的区别在于它们对代码的处理方式。
Dalvik使用JIT(即时编译)技术,在应用程序运行时将应用程序的代码编译成Dalvik字节码,并将其存储在设备的内存中。当应用程序需要执行这些代码时,Dalvik会将其转换为本机代码,以便更快地执行。这种方法在处理大量代码时效率较低,因为每次应用程序执行时都需要重新编译。
ART则使用AOT(预编译)技术,在应用程序安装期间将应用程序的代码预先编译成本机代码,并将其存储在设备的内存中。这样,当应用程序需要执行代码时,它可以直接执行本机代码,而无需在运行时进行编译。这种处理方式更快,并且可以提高应用程序的性能。
区别
因为ART使用先前预编译的本机代码,所以它的启动时间比Dalvik快,尤其是在多任务环境下,例如不停地切换应用程序时。此外,ART的应用程序运行速度也更快,因为它不需要在运行时编译代码,而是可以直接执行本机代码。
然而,由于ART的预编译过程需要花费更多时间,因此在应用程序安装时,需要更长的等待时间。此外,ART需要更多的设备存储空间,因为它需要存储预编译的本机代码。
结论
总而言之,在Android系统中,ART和Dalvik之间的主要区别在于它们对应用程序代码的处理方式。尽管ART需要更长的等待时间和更多的设备存储空间,但它的应用程序运行速度确实比Dalvik更快。因此,Android系统用户可以根据自己的使用需求选择ART或Dalvik之一。