Android开发Android技术知识Android开发

Android进阶(15)| Dalvik和ART

2019-09-30  本文已影响0人  yzbkaka

一.Dalvik虚拟机

Dalvik虚拟机,简称为DVM,是Google为Android平台专门开发的一款虚拟机,它运行在Android运行时的库中。

1.DVM和JVM的区别

需要注意的是,DVM并不是Java虚拟机,因为它并不是按照JVMM规范来实现的,除此以外,其和JVM之间的区别如下:

2.DVM架构

DVM架构图

可以看出,首先Java编译器编译的.class文件经过DX工具转换为.dex文件,之后.dex工具文件由类加载器处理,接着解释器根据指令集对Dalvik字节码进行解释、执行,最后交于Linux处理。

3.DVM运行时的堆

DVM在运行时堆使用的是标记-清除算法来进行垃圾回收的。它的堆是由2个Space和多个辅助数据结构组成,2个Space分别是Zygote Space和Allocation Space:

DVM中数据结构如下:

二.ART虚拟机

ART虚拟机是Android 4.4发布的,用来替换Dalvik虚拟机。在Android 5.0版本中默认采用了ART,DVM从此退出了。

1.ART和DVM的区别

(1) DVM中的应用每次运行时,字节码都需要通过JIT编译器编译为机器码;而在ART中,系统在安装应用程序时会进行一次AOT(预编译),也就是会将字节码预先编译为机器码并存储在本地,之后又改进为只在安装时将部分字节吗预先编译为机器码,剩余部分则会在运行中将热点代码编译为机器码。

(2) DVM是为32位CPU设计的,而ART支持64位并且兼容32位。

(3) ART对垃圾回收机制进行了改进。

(4) ART的运行时栈空间划分和DVM有所不同。

2.ART的运行时的堆

ART采用的是多种垃圾收集方案,每个方案会运行不同的垃圾收集器,默认采用的CMS方案。ART的运行时堆的空间也会有不同的划分,默认是由4个Space和多个辅助数据结构组成的,这4个Space分别是:

三.DVM和ART的启动过程

上一篇下一篇

猜你喜欢

热点阅读