美文网首页安卓面试
Dalvik和ART区别

Dalvik和ART区别

作者: 初心一点 | 来源:发表于2019-02-22 21:27 被阅读7次

    要搞清楚区别,首先来认识下这2者分别是撒

    什么是Dalvik?

    1. Dalvik是用于Android平台的Java虚拟机
    2. Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一
    3. 它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行
    4. .dex格式是专为Dalvik应用设计的一种压缩格式,适合内存和处理器速度有限的系统
    5. Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为独立的Linux进程执行
    6. 独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭

    Dalvik特点

    1. Dalvik是依靠一个Just-In-Time(JIT编译)编译器去解释字节码
    2. Dalvik虚拟机下运行Java时,要将字节码通过即时编译器(just in time ,JIT)转换为机器码(机器码才是能真正运行的),这会拖慢应用的运行效率
    3. 应用安装时,执行dexopt指令,将dex文件优化为odex文件
    4. 应用运行时,会将二进制翻译成机器码流程

    鉴于Dalvik这个缺点,Google开发了新的虚拟机叫ART(Android Runtime)

    ART(ART代表Android Runtime,Android 4.4引入)

    1. 应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用,这个过程叫做预编译(AOT,Ahead-Of-Time)
    2. 在移除解释代码这一过程后,应用程序执行将更有效率,启动更快

    ART特点

    1. AOT编译
    2. 应用安装时执行dex2oat指令,将dex文件翻译为oat文件
    3. 应用运行时,无二进制翻译为机器码流程

    ART分为2种模式, 即解释模式和AOT机器码模式

    1. 解释模式类似于JavaScript, 就是取出Dex代码并逐条解释,运行仍然会慢
    2. 机器码模式就是在安装app时就编译好Dex对应的机器码,运行很快, 这是Android5.0及后续版本的默认方式。

    总结

    ART应用启动快,运行快,但是耗费更多存储空间,安装时间长,总的来说ART的功效就是”空间换时间”

    相关文章

      网友评论

        本文标题:Dalvik和ART区别

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