在棉花糖中,添加了ART的AOT编译器。从Android N开始,除了AOT之外,还添加了另一个编译器JIT。
什么是AOT编译器特定的作业/功能,什么是JIT编译器的作业/功能?
最佳答案
在Android中,Java类转换为DEX字节码。
DEX字节码格式可通过ART或Dalvik运行时转换为本地机器代码。
(Dalvik使用JIT(及时)编译,而ART使用AOT(提前)编译。)
即时(JIT):
使用Dalvik JIT编译器,每次运行该应用程序时,它会将Dalvik字节码的一部分动态转换为机器代码。随着执行的进行,更多的字节码将被编译和缓存。由于JIT仅编译部分代码,因此它具有较小的内存占用空间,并且在设备上使用的物理空间更少。
提前(AOT):
ART配备了Ahead-of-time编译器。在应用程序的安装阶段,它会将DEX字节码静态转换为机器代码,并存储在设备的存储设备中。这是一次事件,在设备上安装了应用程序时会发生。
Android N包含混合运行时:
在安装过程中不会进行任何编译,并且可以立即启动应用程序,
被解释的字节码。 ART中有一个新的,更快的解释器,并附带了一个新的JIT,但JIT信息并未保留。
而是在执行期间对代码进行概要分析,并保存结果数据。
ART的好处:
ART的缺点: