14、Android启动:Dalvik、ART与Zygote解析

Android启动:Dalvik、ART与Zygote解析

1. ART概述

1.1 ART的引入与发展

ART(Android Runtime)最初在Android KitKat(4.4,API 19)中作为实验性运行时环境引入,并在Android Lollipop(5.0,API 21)中取代了Dalvik。它使用与Dalvik相同的中间语言DEX,大多数在ART出现之前编译并能在Dalvik上运行的程序,无需修改即可在ART环境中运行。不过,ART在优化和执行程序的策略上与Dalvik有显著不同。Google提出了提前编译(Ahead-of-Time,AOT)优化的概念,以区别于Dalvik的即时编译(JIT)策略。

1.2 AOT优化策略

“提前编译”意味着将编译为DEX中间语言的应用程序,在安装到设备后的某个时间点,使用名为dex2oat的工具一次性转换为本地代码。这种策略保留了中间语言的核心目标——可移植性。每个Android设备的操作系统中都安装了一个版本的dex2oat,它类似于虚拟机,针对特定的硬件平台。当新应用安装时,dex2oat将应用的中间语言转换为本地二进制文件。应用运行时,执行的是针对其平台的本地代码,无需进一步转换,避免了因重复翻译相同指令而造成的资源浪费。

1.3 判断系统使用的运行时

要确定系统使用的是Dalvik还是ART,可以通过获取系统属性 persist.sys.dalvik.vm.lib.1 的值来判断:

getprop persist.sys.dalvik.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值