美文网首页
Dalvik、ART与JVM之间区别

Dalvik、ART与JVM之间区别

作者: figo葉 | 来源:发表于2019-08-23 09:52 被阅读0次

Dalvik简介

1、Google自己设计的用于Android平台的虚拟机

2、支持已转化为dex格式的java应用程序运行;

dex是专为Dalvik设计的一种压缩格式

3、允许在有限的内存中同时运行多个虚拟机实例,并未每一个Dalvik应用作为一和独立的Linux进程运行;

4、5.0以后,Google直接删除Dalvik,取而代之的是ART。

Dalvik与JVM区别

1、Dalvik是基于寄存器,JVM基于栈;

2、Dalvik运行dex文件,JVM运行java字节码;

3、自Android2.2以后,Dalvik支持JIT(即时编译技术)。

ART(Android Runtime)

1、在Dalvik下,应用每次运行,字节码都需要通过即时编译器转化为机器码,这样会拖慢应用的运行效率;

2、在ART下,应用第一次安装时,字节码就会预先变异成机器码,使其真正成为本地应用。这个过程叫做预编译(AOT),这样,每次启动和执行的时候都会更快。

Dalvik与ART区别

最大的不同就是:Dalvik是即时编译,每次运行前都先编译;而ART采用预编译。

ART优缺点

优点:

1、系统性能显著提升;

2、应用启动更快,运行更快,体验更流畅;

3、更长的电池续航能力;

4、支持更低的硬件。

缺点:

1、机器码占用存储空间更大;

2、应用安装时间变长。

Dex

Dex文件是Dalvik的可执行文件,Dalvik是针对嵌入式设备设计的java虚拟机,所以Dex文件和Class文件的结构上有很大区别。为了更好的利用嵌入式你设备的资源,Dalvik在java程序编译后,还需要用dx工具将编译产生的数个Class文件整合成一个Dex文件。这样其中的各个类就可以共享数据,减少冗余,使文件结构更加紧凑

一个设备在执行Dex文件之前,需要优化该Dex文件并生成对应的Odex文件,然后该Odex文件被Dalvik执行。Odex文件本质是个Dex文件,只是针对目标平台做了相关优化,包括对内部字节码进行一系列处理,主要为字节码验证,替换优化及空方法消除。

相关文章

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

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

  • Dalvik、ART与JVM之间区别

    Dalvik简介 1、Google自己设计的用于Android平台的虚拟机; 2、支持已转化为dex格式的java...

  • Android面试 虚拟机相关

    面试问题 Jvm,Dalvik与Art三者之间的区别 那dex和class到底在结构上有什么区别呢 Android...

  • Android虚拟机

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

  • 2021-02-24

    JVM、Dalvik、ART三者的关系 JVM、Dalvik、ART三者的关系[https://www.jians...

  • JVM\Dalvik与ART的区别

    Dalvik与JVM的区别 1、Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于编译后变大的程...

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

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

  • Android 虚拟机—Dalvik&ART

    Dalvik 虚拟机与ART 虚拟机 Dalvik是什么? Dalvik 是实现了 JVM 规范的虚拟机,内部默认...

  • Jvm,Dalvik和Art区别

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

  • 类加载机制

    JVM 与 Dalvik Android 应用程序运行在 Dalvik / ART 虚拟机上,每个应用程序都有一个...

网友评论

      本文标题:Dalvik、ART与JVM之间区别

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