Android运行时(ART)
关于Android运行时(ART)的解析如下:
一、核心定义
Android Runtime(ART)是Android操作系统的核心运行时环境,自Android 5.0开始取代Dalvik虚拟机成为默认运行时。其主要职责包括:
应用执行:负责Java/Kotlin应用程序的字节码解释与本地机器码执行
代码编译:通过dex2oat工具将Dex字节码预编译为OAT格式的本地机器码
内存管理:管理对象的生命周期和垃圾回收
二、主要特性
AOT编译机制
安装时通过dex2oat生成OAT文件,将Dex字节码转换为目标平台本地指令
相较于Dalvik的JIT即时编译,显著提升首次执行速度
执行模式优化
支持机器码模式(编译后的本地代码)和解释模式(直接执行Dex字节码)
根据代码热点自动触发JIT编译(Android 7.0+)
方法内联与优化
在OAT生成阶段进行方法内联优化,影响动态代码加载方案
通过ArtMethod对象管理所有Java方法元数据
三、关键组件
组件名称 功能描述
dex2oat 将Dex文件编译为OAT格式的本地机器码,支持AOT编译和代码优化
ArtMethod 表示Java方法的C++对象,包含entrypoint、参数类型等关键信息
Class Linker 管理类的加载、链接和初始化,负责将Dex中的类转换为运行时可用形式
Check Point 线程执行时的检查点机制,用于处理挂起请求、垃圾回收等系统级操作
四、运行机制差异
特性 ART实现 Dalvik实现
编译方式 安装时AOT编译为主,配合运行时JIT优化 运行时JIT编译
内存占用 更高的安装包体积(存储编译后的OAT文件) 更低内存占用
执行速度 首次启动更快(预编译本地代码) 首次启动较慢
动态代码加载 需考虑方法内联带来的兼容性问题 无方法内联影响
五、版本演进
Android 4.4:首次引入ART作为可选运行时
Android 5.0:成为默认运行时,全面启用AOT编译
Android 7.0:引入混合编译(AOT+JIT)
Android 9.0:优化Verify Class机制,提供Runtime::DisableVerifier接口