DVM和ART的区别详解

1 篇文章 0 订阅

DVM是Google为了Android平台研发的虚拟机,DVM严格上来说并不是JAVA虚拟机,其本身并没有遵循JVM规范。
ART是在Android4.4的时候由Google研发,用于替换DVM的虚拟机。
ART虚拟机与DVM主要有以下4点不同:
1、应用运行方式不同:DVM中的应用每次运行的时候,字节码都需要通过JIT编译器编译为机器码,这样就会导致应用的运行效率变低。而ART,系统在安装应用程序的时候会进行一次预编译处理,将字节码预先编译成机器码并存储在本地,这样应用程序每次运行时就不需要执行编译了,运行效率会大大提升,设备的耗电量也会降低。当然使用AOT会使应用程序的安装时长边长,尤其是一些复杂的应用。另外字节码编译成机器码,机器码需要的存储空间会多一些。在Android7.0之后ART加入即时编译器JIT,在应用程序安装的时候,并不会将字节码全部编译为机器码,仅将热点代码编译成机器码,从而缩短了应用的安装时间并节省了空间。
2、DVM是为了32位的CPU设计的,而ART支持64位的并兼容32位的CPU。DVM基于寄存器,其使用寄存器的都是32位,这就导致对于64位的类型,他需要使用连续的两个寄存器来表示。
3、ART对垃圾回收机制进行改进,比如更频繁地执行并垃圾收集,将GC暂停的次数由2次减少到1次。
4、ART的运行时堆空间划分和DVM不同。
DVM在运行时堆采用标记-清除的算法GC,它由两个Space以及多个辅助的数据结构组成,其本身主要是由Zygote Space和Allocation Space组成。其中Zygote Space主要是管理Zygote进程启动过程中预加载和创建的对象,不会触发GC,由Zygote Space和应用进程共享空间。对象在Allocation Space上分配和释放。ART 虚拟机主要增加了Image Space和Large Object Space两个空间,分别用于存放预加载类和大对象,对于ART虚拟机而言,Zygote Space和Image Space为进程共享内存。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值