请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

老婆偷你上瘾 豪门罪媳 阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里? 至尊小农民王木生 判官眼

[复制链接]
查看: 502|回复: 0

78

主题

253

帖子

409

积分

等待验证会员

积分
409
发表于 2019-7-12 00:27 | 显示全部楼层 |阅读模式
这是写在帖子头部的内容
本专栏专注分享大型Bat口试常识,后续会延续更新,喜好的话麻烦点击一个关注
空话不多说先上口试目录

阿里巴巴 说说 Android 虚拟机Dalvik与ART区分在那里?

阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?  国内新闻 002720f5obqjoz1777d87y


Android开辟中我们打仗的是与Java虚拟机类似的Dalvik虚拟机和ART虚拟机,下面梳理一下三者区分和道理:
<h1>一,Dalvik虚拟机 Dalvik虚拟机( Dalvik Virtual Machine ),

简称Dalvik VM大概DVM。Dalvik 发音有道辞书并没有收录。说说来历,它是由Dan Bornstein编写的,名字源于他的祖先居住过的名为Dalvik的小渔村。DVM是Google专门为Android平台开辟的虚拟机,它运转在Android运转时库中。需要留意的是DVM并不是一个Java虚拟机(以下简称JVM)
DVM与JVM的区分
DVM之所以不是一个JVM ,首要缘由是DVM并没有遵守JVM标准来实现。DVM与JVM首要有以下区分。
基于的架构分歧 JVM基于栈则意味着需要去栈中读写数据,所需的指令会更多,这样会致使速度慢,对于性能有限的移动装备,明显不是很合适。 DVM是基于寄存器的,它没有基于栈的虚拟机在拷贝数据而利用的大量的收支栈指令,同时指令更松散更简洁。可是由于显现指定了操纵数,所以基于寄存器的指令会比基于栈的指令要大,可是由于指令数目的削减,总的代码数不会增加几多。
履行的字节码分歧
在Java SE法式中,Java类会被编译成一个或多个.class文件,打包成jar文件,尔后JVM会经过响应的.class文件和jar文件获得响应的字节码。履行顺序为: .java文件 -> .class文件 -> .jar文件 而DVM会用dx工具将一切的.class文件转换为一个.dex文件,然后DVM会从该.dex文件读取指令和数据。履行顺序为: .java文件 –>.class文件-> .dex文件

阿里巴巴 说说 Android 虚拟机Dalvik与ART区分在那里?

阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?  国内新闻 002720sin8rnssrlz44jsi


如上图所示,.jar文件里面包括多个.class文件,每个.class文件里面包括了该类的常量池、类信息、属性等等。当JVM加载该.jar文件的时辰,会加载里面的一切的.class文件,JVM的这类加载方式很慢,对于内存有限的移动装备并分歧适。 而在.apk文件中只包括了一个.dex文件,这个.dex文件里面将一切的.class里面所包括的信息全数整合在一路了,这样再加载就进步了速度。.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把一切的.class文件整合到.dex文件中,削减了I/O操纵,进步了类的查找速度。
DVM答应在有限的内存中同时运转多个进程
DVM经过优化,答应在有限的内存中同时运转多个进程。在Android中的每一个利用都运转在一个DVM实例中,每一个DVM实例都运转在一个自力的进程空间。自力的进程可以避免在虚拟机解体的时辰一切法式都被封闭。
DVM由Zygote建立和初始化
在Android系统启动流程(二)剖析Zygote进程启动进程这篇文章中我先容过 Zygote,可以称它为孵化器,它是一个DVM进程,同时它也用来建立和初始化DVM实例。每当系统需要建立一个利用法式时,Zygote就会fock本身,快速的建立和初始化一个DVM实例,用于利用法式的运转。
DVM架构
DVM的源码位于dalvik/目录下,其中dalvik/vm目录下的内容是DVM的具体实现部分,它会被编译成libdvm.so;dalvik/libdex会被编译成libdex.a静态库,作为dex工具利用;dalvik/dexdump是.dex文件的反编译工具;DVM的可履行法式位于dalvik/dalvikvm中,将会被编译成dalvikvm可履行法式。DVM架构以下图所示。

阿里巴巴 说说 Android 虚拟机Dalvik与ART区分在那里?

阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?  国内新闻 002721rttld9jjd89jlo9j


从上图可以看出,首先Java编译器编译的.class文件经过DX工具转换为.dex文件,.dex文件由类加载器处置,接着诠释器按照指令集对Dalvik字节码停止诠释、履行,最初交与Linux处置。
DVM的运转时堆
DVM的运转时堆首要由两个Space以及多个帮助数据结构组成,两个Space别离是Zygote Space(Zygote Heap)和Allocation Space(Active Heap)。Zygote Space用来治理Zygote进程在启动进程中预加载和建立的各类工具,Zygote Space中不会触发GC,一切进程都同享该地区,比如系统资本。Allocation Space是在Zygote进程fork第一个子进程之前建立的,它是一种私有进程,Zygote进程和fock的子进程在Allocation Space上停止工具分派和开释。
除了这两个Space,还包括以下数据结构:
Card Table: 用于DVM Concurrent GC,当第一次停止渣滓标志后,记录渣滓信息。 Heap Bitmap: 有两个Heap Bitmap,一个用来记录上次GC存活的工具,另一个用来记录此次GC存活的工具。 Mark Stack: DVM的运转时堆利用标志-断根(Mark-Sweep)算法停止GC,不领会标志-断根算法的同学检察Java虚拟机(四)渣滓收集算法这篇文章。Mark Stack就是在GC的标志阶段利用的,它用来遍历存活的工具。
<h1>二.ART虚拟机

ART(Android Runtime)是Android 4.4公布的,用来替换Dalvik虚拟,Android 4.4默许采用的还是DVM,系统会供给一个选项来开启ART。在Android 5.0时,默许采用ART,DVM今前收支历史舞台。
ART与DVM的区分

  • DVM中的利用每次运转时,字节码都需要经过立即编译器(JIT,just in time)转换为机械码,这会使得利用的运转效力下降。而在ART中,系统在安装利用时会停止一次预编译(AOT,ahead of time),将字节码预先编译成机械码并存储在当地,这样利用每次运转时就不需要履行编译了,运转效力也大大提升。
  • ART占用空间比Dalvik大(字节码变成机械码以后,能够会增加10%-20%),这就是“时候换空间大法”。
  • 预编译也可以明显改良电池续航,由于利用法式每次运转时不用反复编译了,从而削减了 CPU 的利用频次,下降了能耗。
ART的运转时堆

  • 与DVM的GC分歧的是,ART的GC范例有多种,首要分为Mark-Sweep GC和Compacting GC。ART的运转时堆的空间按照分歧的GC范例也有着分歧的分别,假如采用的是Mark-Sweep GC,运转时堆主如果由四个Space和多个帮助数据结构组成,四个Space别离是Zygote Space、Allocation Space、Image Space和Large Object Space。Zygote Space、Allocation Space和DVM中的感化是一样的。Image Space用来寄存一些预加载类,Large Object Space用来分派一些大工具(默许巨细为12k)。其中Zygote Space和Image Space是进程间同享的。 采用Mark-Sweep GC的运转时堆空间分别以下图所示。


阿里巴巴 说说 Android 虚拟机Dalvik与ART区分在那里?

阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?  国内新闻 002721qjfixkaxoj0aioz8




2.除了这四个Space,ART的Java堆中还包括两个Mod Union Table,一个Card Table,两个Heap Bitmap,两个Object Map,以及三个Object Stack
整理了一些材料目录,需要的小伙伴可以:转发+关注+私信我(材料)获得

阿里巴巴 说说 Android 虚拟机Dalvik与ART区分在那里?

阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?  国内新闻 002721hhd93xdg4hdsqaf3


阿里巴巴 说说 Android 虚拟机Dalvik与ART区分在那里?

阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?  国内新闻 002721l7ebbzbj2bb7bjy8






阿里巴巴 说说 Android 虚拟机Dalvik与ART区分在那里?

阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?  国内新闻 002721m2ou16gu8oipaplp

感激您的阅读
[url=http://platyna.ru/user/vorodVok/]http://platy
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 科技资讯网|科技新闻网--最新最快科技新闻发布汇集平台。 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表