浅谈android应用之DVM & ART

1. 前言

更多内容请查看android生态之应用篇

之前有写过一篇文章浅谈android源码之dalvik,有兴趣深入学习的话可以看看我这篇文章,ART的话之前也没有写过比较深入学习的文章,后边有时间的话也会补齐。现在这篇文章也不往深了讲,讲讲基本概念,对DVM以及ART有基本的认识就行。

2. DVM

DVM全称为Dalvik Virtual Machine。它是由Dan Bornstein编写的,名字源于他的祖先居住过的名为Dalvik的小渔村。DVM是Google专门为Android平台开发的虚拟机,它运行在Android运行时库中。

3. ART

ART全称为Android Runtime。是Android 4.4发布的,用来替换Dalvik虚拟,Android 4.4默认采用的还是DVM,系统会提供一个选项来开启ART。在Android 5.0时,默认采用ART,DVM从此退出历史舞台。

4. DVM,ART,JVM三者的区别

DVM和JVM的区别

1.基于的架构不同

DVM是基于寄存器的,它没有基于栈的虚拟机在复制数据时而使用的大量的出入栈指令,同时指令更紧凑、更简洁。但是由于显式指定了操作数,所以基于寄存器的指令会比基于栈的指令要大,但是由于指令数量的减少,总的代码数不会增加多少

2.执行的字节码不同

JVM执行顺序:.java文件–>.class文件–>.jar文件

DVM执行顺序:.java文件–>.class文件–>.dex文件

.apk文件中只包含了一个.dex文件,这个.dex文件将所有的.class里面所包含的信息全部整合在一起了,这样再加载就加快了速度

3.DVM允许在有限的内存中同时运行多个进程

4.DVM由Zygote创建和初始化

5.DVM有共享机制

不同应用之间在运行时可以共享相同的类,拥有更高的效率,而JVM机制不存在这种共享机制

6.DVM早期没有使用JIT编译器,Android 2.2之后开始使用JIT

ART和DVM的区别

1.ART采用了AOP技术,安装程序时,将字节码预先编译成机器码并存储在本地,这样应用程序可以不再次编译后才能启动程序(类似srollview一次性全加载完)。DVM则是没有这一步的操作,每次打开程序都要编译一次程序(类似listview,等到你进入到某一项才给你加载)

2.DVM为32位cpu设计,而ART支持64位且兼容了32位cpu

3.ART对回收机制做了改进

4.ART运行时空间划分与DVM不同

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值