前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dalvik、ART与JVM之间的关系

Dalvik、ART与JVM之间的关系

作者头像
蜻蜓队长
发布2018-08-03 15:13:36
1.4K0
发布2018-08-03 15:13:36
举报
文章被收录于专栏:Android机动车

01

Dalvik简介

1、Google自己设计的用于Android平台的虚拟机
2、支持已转化为dex格式的java应用程序运行;
dex是专为Dalvik设计的一种压缩格式
3、允许在有限的内存中同时运行多个虚拟机实例,并未每一个Dalvik应用作为一和独立的Linux进程运行;
4、5.0以后,Google直接删除Dalvik,取而代之的是ART。

02

Dalvik与JVM区别

1、Dalvik是基于寄存器,JVM基于栈;
2、Dalvik运行dex文件,JVM运行java字节码;
3、自Android2.2以后,Dalvik支持JIT(即时编译技术)。

03

ART(Android Runtime)

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

04

Dalvik与ART区别

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

05

ART优缺点

优点:

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

缺点:

1、机器码占用存储空间更大;
2、应用安装时间变长。

06

Dex

Dex文件是Dalvik的可执行文件,Dalvik是针对嵌入式设备设计的java虚拟机,所以Dex文件和Class文件的结构上有很大区别。为了更好的利用嵌入式你设备的资源,Dalvik在java程序编译后,还需要用dx工具将编译产生的数个Class文件整合成一个Dex文件。这样其中的各个类就可以共享数据,减少冗余,使文件结构更加紧凑
一个设备在执行Dex文件之前,需要优化该Dex文件并生成对应的Odex文件,然后该Odex文件被Dalvik执行。Odex文件本质是个Dex文件,只是针对目标平台做了相关优化,包括对内部字节码进行一系列处理,主要为字节码验证,替换优化及空方法消除。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android机动车 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Google自己设计的用于Android平台的虚拟机;
  • 2、支持已转化为dex格式的java应用程序运行;
  • dex是专为Dalvik设计的一种压缩格式
  • 3、允许在有限的内存中同时运行多个虚拟机实例,并未每一个Dalvik应用作为一和独立的Linux进程运行;
  • 4、5.0以后,Google直接删除Dalvik,取而代之的是ART。
  • 1、Dalvik是基于寄存器,JVM基于栈;
  • 2、Dalvik运行dex文件,JVM运行java字节码;
  • 3、自Android2.2以后,Dalvik支持JIT(即时编译技术)。
  • 1、在Dalvik下,应用每次运行,字节码都需要通过即时编译器转化为机器码,这样会拖慢应用的运行效率;
  • 2、在ART下,应用第一次安装时,字节码就会预先变异成机器码,使其真正成为本地应用。这个过程叫做预编译(AOT),这样,每次启动和执行的时候都会更快。
  • 最大的不同就是:Dalvik是即时编译,每次运行前都先编译;而ART采用预编译。
  • 优点:
    • 1、系统性能显著提升;
      • 2、应用启动更快,运行更快,体验更流畅;
        • 3、更长的电池续航能力;
          • 4、支持更低的硬件。
          • 缺点:
            • 1、机器码占用存储空间更大;
              • 2、应用安装时间变长。
                • Dex文件是Dalvik的可执行文件,Dalvik是针对嵌入式设备设计的java虚拟机,所以Dex文件和Class文件的结构上有很大区别。为了更好的利用嵌入式你设备的资源,Dalvik在java程序编译后,还需要用dx工具将编译产生的数个Class文件整合成一个Dex文件。这样其中的各个类就可以共享数据,减少冗余,使文件结构更加紧凑。
                  • 一个设备在执行Dex文件之前,需要优化该Dex文件并生成对应的Odex文件,然后该Odex文件被Dalvik执行。Odex文件本质是个Dex文件,只是针对目标平台做了相关优化,包括对内部字节码进行一系列处理,主要为字节码验证,替换优化及空方法消除。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档