在棉花糖中,添加了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的好处:

  • 应用程序在安装过程中完成DEX字节码转换后,运行速度更快。
  • 由于直接执行 native 代码,因此减少了应用程序的启动时间。
  • 提高了电池性能,因为节省了用于逐行解释字节码的电量。
  • 改进的垃圾收集器。

  • ART的缺点:
  • 应用程序安装需要花费更多时间,因为在安装过程中将DEX字节码转换为机器代码。
  • 由于安装时生成的 native 代码存储在内部存储器中,因此需要更多内部存储器。
  • 10-08 03:02