1

最近我回答了this question,这里介绍了.apk文件到android手机的整个安装过程。这是关于使用Dalvik VM的一件事。而现在我想知道的是安装过程是完全相同的使用ART?有什么区别? 我的意思是PackageManager路径皈依到dex格式等工作 谷歌搜索没有给太多的信息,只有高性能电源,内存管理和类似的东西。 如果有知识的人可以分享这些信息,我将非常感激。ART中.apk的安装过程。与Dalvik VM安装过程的区别

+0

除了运行dex2oat来生成艺术文件,而不是dexopt来生成odex文件之外,艺术没有太大的区别。 – JesusFreke

回答

3

Android应用程序采用.apk文件格式,Java类转换为DEX字节码。字节码格式与设备体系结构无关,需要翻译成本机机器码才能在设备上运行。这对于ARTDalvik运行时都是一样的。

DalvikART最显著的变化是Dalvik基于刚刚在时间JIT)编译,而ART基于名列前茅的时间AOT)编译。

通过Dalvik JIT编译器,每次运行应用程序时,它都会动态地将字节码的一部分转换为机器码。随着执行的进行,更多的字节码被编译和缓存。另一方面,ART配备了一个前期编译器。在应用安装阶段,它会将DEX字节码静态转换为机器码并存储在设备的存储器中。这是在应用安装在设备上时发生的一次性事件。

性能

ART运行在Dalvik运行最重要的好处是,应用程序运行在ART更快。由于DEX字节码在安装过程中已被转换为机器码,因此在运行期间无需额外的时间进行编译。由于相同的原因,使用ART启动应用程序也会更快。

因为Dalvik需要额外的内存用于JIT代码缓存,所以当应用在ART上运行时,它会占用较小的内存占用量。

电池寿命

随着Dalviķ运行时,JIT编译CPU界。由于AOT编译,ART可以让CPU在应用执行过程中将DEX字节码翻译为机器码,从而降低能耗。使用ART会导致更长的电池寿命,这是需要电池充电的时间间隔。

安装时间

由于AOT编译该应用安装过程中转化DEX字节码成机器代码,应用程序需要更长的时间与ART运行时在装置上安装。考虑到更快执行和更短启动时间的好处,我们在前面的章节中讨论过,在应用程序安装期间只发生一次的额外时间非常值得。

存储足迹

随着ART运行时,AOT编译器翻译这些应用程序的字节码DEX成机器代码,并将其存储在设备的存储。预编译的二进制文件占用比DEX字节码更多的空间。因此与Dalvik运行时相比,会导致更大的存储占用空间。

摘要

对于这一点,我们已经推出了针对Android新ART运行。我们还讨论了它的好处和妥协,集中了它的前期编译和性能改进。目前发布的预览版仍在积极开发和优化之中,目前我们无法就切换到ART Runtime时获得的性能数量提供定量结论。有一点可以肯定的是,ART将取代Dalvik作为基于x86设备的Android运行时。

Source

+1

我觉得你值得更多upvotes :) – logoff

0

在dvm体系结构中,每次应用程序启动将整个应用程序字节代码转换为dex并执行dex文件时。所以当每次发射同样的事情发生时,为了克服这个问题,ART会出现。在ART中,应用程序安装时只将字节转换为Dex,然后在每次启动时执行相同的dex文件,因此无需在每次启动时进行转换,因此在ART中启动应用程序所用的时间与dvm相比所需时间更短。