Skip to content
阅读进度

ART 使用 AOT 和 JIT 混合编译的优缺点分别是什么? ​

返回 性能与稳定性 目录

标准回答 ​

AOT 提前把代码编译好,JIT 在运行时重点编译经常执行的代码。ART 结合两者平衡安装、空间和运行速度。

  • JIT 运行时识别并编译热点,但有运行时编译成本。
  • AOT 预编译部分代码,改善执行,但需要编译时间和存储。
  • Profile 可指导哪些代码值得预编译。

通俗例子 ​

冷门功能不用提前花同样的优化成本;常走的启动路径可结合运行画像或基线配置进行优化,后续执行少做临时工作。

深入解释 ​

**先解释两个缩写:**AOT 是运行前编译,把部分代码提前变成机器码;JIT 是运行中编译,把经常执行的代码作为优化重点。ART 是 Android 用来执行应用代码的运行时。

**为什么需要结合:**全部提前编译会增加安装或优化时间和存储,全部临时处理又会增加运行开销。使用画像识别常用路径后,可以把优化成本花在更有价值的代码上。

易混淆点 ​

不是每次安装都全量 AOT,也不是所有方法一开始都已经编译。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。