安卓VM总结

本文介绍了Dalvik与ART两种Android虚拟机的特点与区别。Dalvik是专为Android设计的Java虚拟机,支持基于寄存器的架构,适用于资源受限的设备。ART则采用了预编译技术,提升了应用执行效率与电池续航能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 前言


DalvikGoogle公司自己设计用于Android平台的虚拟机。Dalvik经过优化,使其更适合Android平台。具体优点会在下面和JVM进行比较时说明。

20146月谷歌I/O大会,Android L 改动幅度较大,Google将直接删除Dalvik,代替它的是传闻已久的ART

ART又和Dalvik有什么联系和区别呢?


0.1 先对Dalvik以及ART做简单介绍:

什么是Dalvik

DalvikGoogle公司自己设计用于Android平台的Java虚拟机。dex格式是专为Dalvik应用设计的一种压缩格式,适合于内存和处理器速度有限的系统Dalvik允许同时运行多个虚拟机的实例,并且每一个应用作为独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭

 

什么是ART

Dalvik下,应用每次运行都需要通过即时编译器JIT)将字节码转换为机器码,即每次都要编译加运行这一机制并不高效,但让应用安装比较快,而且更容易在不同硬件和架构上运行

ART完全改变了这种做法,在应用安装时就预编译字节码到机器语言移除解释代码这一过程后,应用程序执行将更有效率,启动更快。


1. DalvikJVM的区别

1Dalvik指令集是基于寄存器的架构,dex字节码更适合于内存和处理器速度有限的系统。

(2)而JVM基于栈的。相对而言,基于寄存器的Dalvik实现虽然牺牲了一些平台无关性,但是它在代码的执行效率上要更胜一筹。

 

2. DalvikART的区别

1)在Dalvik下,应用每次运行都需要通过即时编译器JIT)将字节码转换为机器码,即每次都要编译加运行,这虽然会使安装过程比较快,但是会拖慢应用以后每次启动的效率。而在ART 环境中,应用在第一次安装的时候,字节码就会预编译(AOT)成机器码这样的话,虽然设备和应用的首次启动(安装慢了)会变慢,但是以后每次启动执行的时候,都可以直接运行,因此运行效率会提高。

2ART占用空间比Dalvik大字节码变为机器码之后,可能会增加10%-20%),这也是著名的“空间换时间大法"

3预编译也可以明显改善电池续航,因为应用程序每次运行时不用重复编译了,从而减少了 CPU 的使用频率,降低了能耗。 

    


     转载于:http://blog.youkuaiyun.com/seu_calvin/article/details/52354964  

    深入理解dvm和jvm: https://blog.youkuaiyun.com/mr_zhaojy/article/details/52776254

    Dalvik VM (DVM) 与Java VM (JVM)的区别https://blog.youkuaiyun.com/x356982611/article/details/21983267

    JVM、DVM(Dalvik VM)和ART虚拟机对比https://blog.youkuaiyun.com/evan_man/article/details/52414390

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevin@1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值