JVM,Dalivk,ART的区别

Dalvik和JVM的主要区别

首先通过介绍Dalvik的时候我们就知道Dalvik运行的是dex文件,而JVM运行的是class文件。

Dalvik VM是基于寄存器的架构,而JVM是栈机。所以Dalvik VM的好处是可以做到更好的提前优化(ahead-of-time optimization)。 另外基于寄存器架构的VM执行起来更快,但是代价是更大的代码长度。 ~~ 基于寄存器架构的虚拟机有这么多的好处,为什么之前设计JAVA的程序员没有采用呢,而是采用现在基于栈的架构开发的呢?因为基于栈的虚拟机也有它的优点,它不对host平台的寄存器数量做假设,有利于移植到不懂的平台,这也符合的Java跨平台的特点。而Dalvik虚拟机则不关心这些,因为它本来就是为ARM这样的多寄存器平台设计的,另外Dalvik被移植到x86机器上,即使x86这种寄存器少的平台,寄存器架构的虚拟机也可以运行。 ~~ 一般来说,基于堆栈的机器必须使用指令才能从堆栈上的加载和操作数据,因此,相对基于寄存器的机器,它们需要更多的指令才能实现相同的性能。但是基于寄存器机器上的指令必须经过编码,因此,它们的指令往往更大。

Dalvik在JVM上的优化

在编译时提前优化代码而不是等到运行时 虚拟机很小,使用的空间也小;被设计来满足可高效运行多种虚拟机实例。 常量池已被修改为只使用32位的索引,以简化解释器 标准Java字节码实行8位堆栈指令,Dalvik使用16位指令集直接作用于局部变量。局部变量通常来自4位的“虚拟寄存器”区。这样减少了Dalvik的指令计数,提高了翻译速度。

Dalivk进化之ART

2014年6月25日,Android L 正式亮相于召开的谷歌I/O大会,Android L 改动幅度较大,谷歌将直接删除Dalvik,代替它的是传闻已久的ART。

ART:即Android Runtime ART 的机制与 Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time ,JIT)转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。

ART的优缺点

优点:

系统性能的显著提升。 应用启动更快、运行更快、体验更流畅、触感反馈更及时。 更长的电池续航能力。 支持更低的硬件。

缺点:

机器码占用的存储空间更大,字节码变为机器码之后,可能会增加10%-20%(不过在应用包中,可执行的代码常常只是一部分。比如最新的 Google+ APK 是 28.3 MB,但是代码只有 6.9 MB。) 应用的安装时间会变长。

转载于:https://juejin.im/post/5c6e85b0f265da2dbf5f05f8

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值