当前位置: 首页 > news >正文

术语俗话 --- ART和OAT是什么

术语俗话 --- ART和OAT是什么

基本概念

ART(Android Runtime)

Android 5.0 起替代 Dalvik 的运行时环境,负责执行应用代码。

OAT(Ahead-Of-Time compiled file)

ART 环境下将 dex 字节码预编译为本地机器码后生成的文件格式。

两者的关系简单来说:

ART 是运行时引擎,OAT 是 ART 使用的编译产物格式。

从 Dalvik 到 ART 的演进

text
Dalvik 时代:
  .dex → Dalvik 虚拟机逐条解释执行(+ JIT即时编译)

ART 时代:
  .dex → dex2oat 编译 → .oat(本地机器码)→ 直接执行

Dalvik 的方式

text
安装APK
classes.dex 通过 dexopt 优化为 .odex(优化后的字节码)
运行时由 Dalvik 虚拟机解释执行 + JIT 编译热点代码

ART 的方式(Android 5.0-6.0)

text
安装APK
classes.dex 通过 dex2oat 编译为 .oat(本地机器码)
运行时直接执行机器码,无需解释

ART 的方式(Android 7.0+,混合模式)

text
安装APK
先不编译,直接解释执行 + JIT
收集热点代码 profile
设备空闲时,dex2oat 根据 profile 编译热点代码为 .oat