当前位置:首页 > 科技  > 软件

Dalvik与ART的架构差异,你学会了吗?

来源: 责编: 时间:2024-01-26 09:02:07 254观看
导读DalvikDalvik是Google公司自己设计用于Android平台的Java虚拟机。它是Android移动设备平台的核心组成部分之一,可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压

Dalvik

Dalvik是Google公司自己设计用于Android平台的Java虚拟机。它是Android移动设备平台的核心组成部分之一,可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。此外,Dalvik虚拟机基于寄存器,与标准Java虚拟机(JVM)基于栈的架构存在显著差异。nMD28资讯网——每日最新资讯28at.com

  • 原理:一个应用首先经过DX工具将class文件转换成Dalvik虚拟机可以执行的dex文件,然后由类加载器加载原生类和 Java类。Dalvik虚拟机负责解释器根据指令集对Dalvik字节码进行释dex文件为机器码。
  • JIT编译器:Dalvik负责将dex翻译为机器码交由系统调用,有一个缺陷,每次执行代码,都需要Dalvik将操作码代码翻译为机器对应的微处理器指令,然后交给底层系统处理,运行效率很低。JIT编译器,当App运行时,每当遇到一个新类,JIT编译器就会对这个类进行即时编译,经过编译后的代码,会被优化成相当精简的原生型指令码(即native code),这样在下次执行到相同逻辑的时候,速度就会更快。
  • Dalvik的启动流程:Dalvik进程管理是依赖于linux的进程体系结构的,如要为应用程序创建一个进程,它会使用linux的fork机制来复制一个进程。

ART

ART(Android Runtime)是Android平台上的一个运行时环境,用于执行Android应用程序。它是Android操作系统的重要组成部分,为应用程序提供了执行环境。nMD28资讯网——每日最新资讯28at.com

ART是在Android 5.0(API级别21)中引入的,旨在改进应用程序的执行性能和兼容性。在ART出现之前,Android使用的是Dalvik虚拟机作为其运行时环境。与Dalvik相比,ART在运行应用程序时进行了更多的优化和编译,从而提高了应用程序的执行效率和稳定性。nMD28资讯网——每日最新资讯28at.com

当应用程序在Android设备上安装时,ART会将其转换为已优化的机器代码,这有助于提高应用程序的运行速度。此外,ART还支持即时编译(JIT),这意味着它在运行时将字节码转换为机器代码,进一步提高了应用程序的执行效率。nMD28资讯网——每日最新资讯28at.com

  • 原理:JIT是运行时编译,这样可以对执行次数频繁的dex代码进行编译和优化,减少以后使用时的翻译时间, 但将dex翻译为本地机器码也要占用时间。ART的策略与Dalvik不同,在ART环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。之后打开App的时候,不需要额外的翻译工作,直接使用本地机器码运行,因此运行速度提高。
  • AOT:AOT是静态编译,应用在安装的时候会启动dex2oat过程把dex预编译成ELF文件,每次运行程序的时候不用重新编译。

使用ART的好处:nMD28资讯网——每日最新资讯28at.com

  1. 提高应用程序的执行速度:由于ART采用了更高效的编译方式,应用程序的运行速度得到了显著提升。
  2. 更好的兼容性:ART对应用程序的代码进行了更全面的优化,减少了因代码问题导致的崩溃或错误。
  3. 更少的内存占用:ART的优化编译方式使得应用程序占用的内存更少,从而提高了设备的整体性能。
  4. 更好的安全性:ART对应用程序代码进行了更严格的检查和验证,增强了应用程序的安全性。

区别

ART和Dalvik在执行方式、编译优化和性能方面存在显著差异。ART通过预编译和全面优化提供了更高的执行效率和稳定性,而Dalvik则更注重在有限内存中的并发执行能力。随着Android版本的演进,ART逐渐成为默认的运行时环境,以提供更好的应用程序性能和用户体验。nMD28资讯网——每日最新资讯28at.com

Dalvik使用JIT,ART结合了两者的优势,使用AOT+JIT(Android7.0之后混合使用,Android5.0-Android7.0之前使用AOT)DVM时为32位CPU设计的,而 ART支持64位并兼容32位CPU,这也是DVM被淘汰的主要原因之一。ART对垃圾回收机制进行了改进,比如更频繁地执行并行垃圾收集,将GC暂停由2次减少为1次等。nMD28资讯网——每日最新资讯28at.com

总结一下,它们之间存在一些关键的区别,主要表现在执行方式、编译优化和性能等方面。nMD28资讯网——每日最新资讯28at.com

  1. 执行方式:Dalvik是依赖于即时编译(JIT)的,它在运行应用程序时将字节码转换为本地机器码。这意味着应用程序的代码在每次运行时都需要被解释和编译,这可能会导致一定的性能开销。相比之下,ART采用预编译(AOT)方式,在应用程序安装时将其编译成本地机器码,从而减少了运行时的编译开销,提高了执行效率。
  2. 编译优化:Dalvik主要关注在有限的内存中同时运行多个虚拟机的实例,而ART则更注重应用程序的执行效率和稳定性。ART在编译过程中会对应用程序代码进行更全面的优化,包括空间优化和时间优化,以实现更快的执行速度和更少的内存占用。
  3. 性能:由于ART采用了预编译和更全面的优化方式,它在执行应用程序时通常表现出更高的性能。与Dalvik相比,ART可以实现更快的启动速度、更流畅的用户体验和更低的功耗。此外,ART还支持更多的语言和框架,使得开发人员能够更加灵活地创建应用程序。


nMD28资讯网——每日最新资讯28at.com


nMD28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-68324-0.htmlDalvik与ART的架构差异,你学会了吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 基于Redisson的RAtomicLong实现全局唯一工单号生成器

下一篇: 接口响应以XML数据格式输出,这些方法你都知道吗?

标签:
  • 热门焦点
  • 6月安卓手机性能榜:vivo/iQOO霸占旗舰排行榜前三

    2023年上半年已经正式过去了,我们也迎来了安兔兔V10版本,在新的骁龙8Gen3和天玑9300发布之前,性能榜的榜单大体会以骁龙8Gen2和天玑9200+为主,至于那颗3.36GHz的骁龙8Gen2领先
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之“想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!”曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 信通院:小米、华为等11家应用商店基本完成APP签名及验签工作

    中国信通院表示,目前,小米、华为、OPPO、vivo、360手机助手、百度手机助手、应用宝、豌豆荚和努比亚等9家应用商店,以及抖音和快手2家新型应用分发平
  • iQOO Neo8系列今日官宣:首发天玑9200+ 全球安卓最强芯!

    在昨日举行的的联发科新一代旗舰芯片天玑9200+的发布会上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品将全球首发搭载这款当前性能最强大的移动平台
  • 三翼鸟智能家居亮相电博会,让用户体验更真实

    2021电博会在青岛国际会展中心开幕中,三翼鸟直接把“家”搬到了现场,成为了展会的一大看点。这也是三翼鸟继9月9日发布了行业首个一站式定制智慧家平台后的
Top