ART虚拟机与Dalvik的核心区别在于:ART将应用编译从“运行时解释”改为“安装时预编译”,用安装时的等待换取运行时的流畅,而Dalvik则在每次运行时边解释边执行,更省存储但更耗电卡顿。
Android系统从4.4版本开始实验性引入ART,到5.0时代全面替代Dalvik,这个替换过程看似平滑,背后却是两种完全不同的执行哲学,下面直接拆开对比,不绕弯子。
ART虚拟机和Dalvik在编译机制上有何本质差异
Dalvik采用的是JIT(即时编译)模式,应用每次启动时,Dalvik虚拟机将dex字节码逐条翻译成机器码,翻译一次执行一次,同一个方法被调用十次,它就翻译十次,日常使用中相当一部分CPU资源都耗费在这套“边看边做”的流程里。
ART则使用AOT(预先编译),应用安装到手机的那一刻,系统直接把dex字节码编译成本地机器码,运行时不再需要解释器参与,CPU直接从内存读取已经编译好的指令,本质上,Dalvik是“现炒现卖”,ART是“提前备菜,点单秒上”。
ART虚拟机是什么?它改变了安卓的底层运行逻辑
从技术演进角度看,ART不再是Dalvik的修修补补,而是重写了一套运行时环境,它保留了dex字节码作为统一分发格式,但用oat文件(Object ART)保存编译后的本地代码,行业共识认为,这一改动让Android从“够用”走向“日用流畅”,是移动端操作系统的分水岭。
JIT与AOT的取舍差异
- Dalvik的JIT优势在于安装速度快、占用空间小,劣势是运行时的持续解释消耗电能和CPU。
- ART的AOT优势在于运行时零翻译成本,多数应用冷启动速度提升明显,劣势是安装耗时变长、占用ROM空间更多。
ART与Dalvik在实际使用中的差距:安装、存储、续航逐项拆解
应用安装速度对比:ART真的慢很多吗
在Android 4.4时代,同一台Nexus 5(高通骁龙800,2GB运存)安装一个50MB的应用,Dalvik耗时约3秒,ART耗时约8秒,到了Android 10之后,ART加入混合编译模式:安装时只编译部分关键路径,其余代码保留为解释执行,日常使用的热门函数则在设备空闲时由后台编译,这种策略下,安装耗时差距已经缩小到Can您称“感知不强”的范围。
近年来的主流安卓机型(比如骁龙8系、天玑9000系处理器)上,安装速度的差异已经不再是用户换机时的主要考量点。
存储占用多少?一个有形的代价
ART的本地机器码体积大约是原dex文件的5到2倍,以微信为例,Dalvik模式下应用本体约200MB,ART模式下可能膨胀到350MB以上,对于32GB容量的老款手机来说,这个差距相当现实,但2026年的主流手机起步容量已经是256GB,存储焦虑大幅缓解,这一劣势被稀释得很淡。
同机型双模式存储占用对比
| 对比项 | Dalvik(JIT) | ART(AOT) |
|---|---|---|
| 安装后体积 | 基准 | 约增加50%-100% |
| 运行内存占用(多发场景) | 高,有较多冗余翻译缓存 | 低,直接执行机器码 |
| 首次启动速度 | 快(无需编译) | 慢(安装时已编译) |
| 日常操作流畅度 | 一般,偶发卡顿 | 流畅,帧率稳定 |
| 多任务后台切换 | 需要重新解释,延迟明显 | 已编译代码直接运行,切换更顺滑 |
耗电差异:为什么说ART更省电
Dalvik时刻进行着字节码到机器码的转换,这个动作持续占用CPU核心,玩《王者荣耀》30分钟,Dalvik多消耗的编译电力大约占整机功耗的8%到12%,ART把编译工作挪到了充电时的空闲阶段,用户实际把玩时CPU负载更低,发热也更小。
业内专家指出,从Dalvik切到ART后,同等亮度和使用强度下,多数机型的亮屏续航能多出20到30分钟,虽然这个数字普通人感知不直观,但握着发热量更低的机身,体验是实打实的。
兼容性与生态迁移:老App在ART上经历过阵痛
Android 5.0刚普及ART时,相当一部分老应用出现闪退、字体错乱、联网功能异常,原因在于这些应用在Dalvik解释器上运行太久,依赖了JIT环境下的某些内存地址特性,开发者被迫重写部分模块来适配ART,这段“阵痛期”持续了大约一年。
art和dalvik哪个好?这个问题的答案已经变了
如果是2015年问,答案是“ART更好,但还没好到让你立刻抛弃旧手机”,放在2026年讨论,Dalvik早已退出主流视野,Android 7.0之后系统底层不再保留Dalvik代码,现在的比较更像是对历史的回顾,不过理解两者的不同,仍然有助于你判断手机卡顿的根源究竟在哪。
art虚拟机模式怎么选?现在没有这个开关了
早期Android 4.4的开发者选项里有个“选择运行时”开关,可以手动切换Dalvik和ART,华为EMUI 3.0、小米MIUI 6时代都有类似的隐藏入口,Android 5.0之后系统直接锁定ART,手动切换选项被彻底移除,如果你在网上看到“一键切换ART”的教程,基本是旧时代遗留内容,或者诱导安装流氓插件的陷阱。
ART混合编译:2026年的安卓还保留着Dalvik的影子吗
Android 7.0引入了JIT与AOT自动配合机制,系统先以JIT方式快速启动应用,记录高频执行的方法,等设备空闲时再把这些方法编译成机器码,下次启动直接使用,这套机制被称作“解释-编译混合模式”,灵感其实源自Dalvik的JIT,算是老技术的隔代重生。
ART在2026年的具体表现
- 配合Android系统的API缓存预烘焙,热门应用首次打开后第二次启动速度普遍提升40%以上。
- 在折叠屏和游戏手机的高性能模式下,ART的提前编译让特效渲染指令直接抵达GPU驱动,省去中间解释层,帧率曲线更平稳。
- 安卓12之后的虚拟机应用扩展(比如双开微信、分身游戏),底层依赖ART的隔离执行能力,Dalvik时代没有这种玩法。
实际场景体验:从老机型的绝望到新机型的无感
手里一台2014年的三星Galaxy S5,刷回Android 4.4.2(Dalvik)和Android 5.0(ART)会有截然不同的感受,刷入LINEAGE OS 12(5.0)开启ART后,解锁屏幕滑动跟手度明显改善,但打开相册和设置界面仍旧要等,刷回TouchWiz 4.4.2,应用切换动画掉帧严重,后台放个音乐再开地图直接卡十秒。
换到2020年的红米K30 Pro(Android 11),ART已经进化得非常成熟,淘宝连续滑动半小时,帧率稳定在55帧以上,这在Dalvik时代是无法想象的。同样的硬件,ART能让老芯片发挥出约15%的额外垂直性能。
主流机型实测感知点
- 小米澎湃OS2机型:ART配合系统联调,打开相机取景框延迟低于100毫秒。
- OPPO ColorOS 14:游戏助手通过ART预编译优化,和平精英HDR高清模式下连续出招无卡顿。
- 华为鸿蒙Next的双框架兼容层:底层仍复用了Linux内核和ART运行时(非Dalvik),保证旧安卓应用的运行基础。
对开发者来说,ART变革了什么
打包与调试步骤的变化
- Dalvik时代,Java代码编译成class文件再转换dex,开发者在Eclipse里部署到真机,IDE直接推送dex到/data/app目录。
- ART时代,Android Studio使用Profileable工具配合编译缓存,安装时自动选择优化等级,热部署平均耗时减少30%。
- 开发者还可以在构建配置里指定
d8编译器和R8混淆器,它们直接生成优化过的dex,ART运行时读取更高效。
内存回收机制的差异
Dalvik使用Mark-Sweep(标记清除),GC时会暂停应用线程,大型位图操作容易触发“卡顿掉帧”,ART在Android 5.0引入并发标记清除,GC停顿从几十毫秒降到几毫秒,Android 8.0之后进一步将GC线程降优先级,前台应用几乎感受不到回收动作。
现在入手安卓手机,还需要纠结ART和Dalvik吗
不需要,自Android 5.0起,ART成为安卓唯一运行时,Dalvik已退出历史版本,选购新手机时,重点还是看处理器代际、内存规格和系统菜谱策略,ART作为底层能力已经全部默认拉满,如果是老设备升级系统,反而要注意ART导致的存储膨胀,预留至少2GB空闲空间再操作升级。
常见问答:关于ART与Dalvik的疑问拆解
ART虚拟机模式会让手机更耗电吗
不会,ART把编译消耗分摊到安装阶段和充电空闲期,运行时CPU负载低于Dalvik,实际使用中,浏览资讯、刷短视频这类轻度负载场景,ART的功耗比Dalvik低大约10%到15%,AOT预编译带来的峰值电流更平滑,电池温度更稳定,间接延长电池循环寿命。
继续使用Dalvik内核的旧手机有哪些隐患
系统安全补丁停留在2016年以前,无法获取新版本加密支持,部分银行类、政务类应用会检测到系统版本过低直接拒绝运行,从性能角度看,App启动等待时间普遍超过2秒,后台常驻两个以上应用就会出现明显掉帧,不建议将这种手机作为日常通讯主力机。
未来是否有其他虚拟机替代ART
Google在Android 13中引入的ART Profiling机制持续增强编译精度,Android 16的重心放在性能无损的AOT增量编译上,行业共识是ART后续不会退役,而是继续吸收JIT的弹性优势,华为方舟编译器、宏内核方案虽然提供了不同方向的思路,但短期内无法撼动ART在安卓生态中的统御地位。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/623920.html





