外观
ART 使用 AOT 和 JIT 混合编译的优缺点分别是什么?
标准回答
AOT 提前把代码编译好,JIT 在运行时重点编译经常执行的代码。ART 结合两者平衡安装、空间和运行速度。
- JIT 运行时识别并编译热点,但有运行时编译成本。
- AOT 预编译部分代码,改善执行,但需要编译时间和存储。
- Profile 可指导哪些代码值得预编译。
通俗例子
冷门功能不用提前花同样的优化成本;常走的启动路径可结合运行画像或基线配置进行优化,后续执行少做临时工作。
深入解释
**先解释两个缩写:**AOT 是运行前编译,把部分代码提前变成机器码;JIT 是运行中编译,把经常执行的代码作为优化重点。ART 是 Android 用来执行应用代码的运行时。
**为什么需要结合:**全部提前编译会增加安装或优化时间和存储,全部临时处理又会增加运行开销。使用画像识别常用路径后,可以把优化成本花在更有价值的代码上。
易混淆点
不是每次安装都全量 AOT,也不是所有方法一开始都已经编译。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
3.1.1