美文网首页程序员Android技术知识Android开发
Android 中的Dalvik和ART是什么,跟JVM又有什么

Android 中的Dalvik和ART是什么,跟JVM又有什么

作者: Android架构 | 来源:发表于2019-02-27 22:21 被阅读5次

    什么是Dalvik?

    • Dalvik是Google公司自己设计用于Android平台的虚拟机。
    • Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一它可以支持已转换为 .dex格式的Java应用程序的运行, .dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
    • Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃时候所有程序都被关闭.
    • 很长时间以来,Dalvik虚拟机一直被用户指责为拖慢安卓系统运行速度不如IOS的根源。2014年6月25日,Android L正式亮相于召开的谷歌i/o大会,Android L改动幅度较大,谷歌将直接删除Dalvik,代替它的是传闻已久的ART.

    Dalvik和JVM有啥关系?

    主要区别:

    • Dalvik是基于寄存器的,而JVM是基于栈的。
    • Dalvik运行dex文件,而JVM运行java字节码
    • 自Android 2.2开始,Dalvik支持JIT(just-in-time,即时编译技术)。
      优化后的Dalvik较其他标准虚拟机存在一些不同特性:
      1.占用更少空间
      2.为简化翻译,常量池只使用32位索引
      3.标准Java字节码实行8位堆栈指令,Dalvik使用16位指令集直接作用于局部变量。局部变量通常来自4位的”虚拟寄存器”区。这样减少了Dalvik的指令指数,提高了翻译速度。

    什么是ART?

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

    优点:

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

    缺点:

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

    资料图

    需要资料的朋友可以加入Android架构交流QQ群聊:513088520

    点击链接加入群聊【Android移动架构总群】:加入群聊

    获取免费学习视频,学习大纲另外还有像高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)等Android高阶开发资料免费分享。

    相关文章

      网友评论

        本文标题:Android 中的Dalvik和ART是什么,跟JVM又有什么

        本文链接:https://www.haomeiwen.com/subject/nnwquqtx.html