java jit aot_AOT和JIT编译器之间的区别android

在Marshmallow,有一个AOT编译器添加了ART.来自Android N的另一个编译器JIT另外添加了AOT.

我的问题是什么是AOT编译器特定的作业/功能以及什么是JIT编译器作业/功能.

解决方法:

在Android Java类中转换为DEX字节码.

DEX字节码格式通过ART或Dalvik运行时转换为本机机器码.

Dalvik is a JIT (Just in time) compilation based engine. There were

drawbacks to use Dalvik hence from Android 4.4 (kitkat) ART was

introduced as a runtime and from Android 5.0 (Lollipop) it has

completely replaced Dalvik. Android 7.0 adds a just-in-time (JIT)

compiler with code profiling to Android runtime (ART) that constantly

improves the performance of Android apps as they run.

(Dalvik使用JIT(及时)编译,而ART使用AOT(Ahead of time)编译.)

及时(JIT):

使用Dalvik JIT编译器,每次运行应用程序时,它都会动态地将Dalvik字节码的一部分转换为机器代码.随着执行的进行,编译和缓存更多的字节码.由于JIT仅编译代码的一部分,因此它具有较小的内存占用并且在设备上使用较少的物理空间.

提前(AOT):

ART配备了Ahead-of-Time编译器.在应用程序的安装阶段,它会将DEX字节码静态转换为机器代码并存储在设备的存储中.这是在设备上安装应用程序时发生的一次性事件.

Android N包含一个混合运行时:

安装过程中不会有任何编译,应用程序可以立即启动,

字节码被解释. ART中有一个新的,更快的解释器,它伴随着一个新的JIT,但JIT信息不会持久存在.

而是在执行期间对代码进行分析,并保存结果数据.

ART的好处:

>在安装过程中完成DEX字节码转换后,应用程序运行得更快.

>直接执行本机代码,减少应用程序的启动时间.

>提高电池性能,因为用于逐行解释字节代码的功率得以保存.

>改进垃圾收集器.

ART的缺点:

>由于在安装过程中将DEX字节码转换为机器代码,因此App安装需要更多时间.

>由于安装时生成的本机代码存储在内部存储中,因此需要更多内部存储.

标签:android,jit,android-6-0-marshmallow,android-7-0-nougat

来源: https://codeday.me/bug/20190611/1218645.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值