美文网首页安卓面试
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的功效就是”空间换时间”

相关文章

  • Android运行时的几个概念解释

    ART、JIT、AOT、Dalvik之间有什么关系? Dalvik与ART的区别 什么是Dalvik? Dalvi...

  • Dalvik,ART与ODEX相爱相生

    如果你有这样的问题:1.Dalvik和ART的区别2.DEX在Dalvik转化为ODEX和ART中转化为ODEX的...

  • ART和Dalvik区别

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

  • Dalvik和ART区别

    要搞清楚区别,首先来认识下这2者分别是撒 什么是Dalvik? Dalvik是用于Android平台的Java虚拟...

  • 热修复原理学习-tinker,qzone

    1.1 Dalvik与ART的区别Dalvik:在Android5.0之前默认使用的是Dalvik。Dalvik是...

  • Android虚拟机

    [Android开发JVM、Dalvik以及ART的区别] 前言 Dalvik是Google公司自己设计用于And...

  • [转]ART和Dalvik区别

    什么是Dalvik Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟...

  • Dalvik和ART的区别

    什么是Dalvik: Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚...

  • Jvm,Dalvik和Art区别

    JVM Java虚拟机 JVM(Java Virtual Machine)是一种软件实现,执行像物理程序的机器。J...

  • ART和Dalvik区别 (ART: Ahead of Time

    ART和Dalvik区别 Art上应用启动快,运行快,但是耗费更多存储空间,安装时间长,总的来说ART的功效就是"...

网友评论

    本文标题:Dalvik和ART区别

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