<返回更多

Android虚拟机Dalvik和ART详解

2023-02-20  51CTO  Android开发编程
加入收藏
App安装时不编译代码只校验合法性,运行时通过解释器执行,将运行频繁的代码进行编译放到内存缓存并且记录在本地配置文件,后台线程编译配置文件记录的方法存放到.odex文件,再次运行App时优先读.odex文件中编译后的代码,然后重复这个过程。

Android应用用JAVA/Kotlin编写,Android虚拟机并不使用JVM字节码,而是将Class文件通过DX编译器(现已换成D8)编译程dex文件,然后由虚拟机执行;

底层眼里无论是java还是kolin,最终都是机器码运行;

不废话,开始介绍

一、Dalvik简单介绍

1、Dalvik虚拟机介绍

Dalvik是google公司自己设计用于Android平台的虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且 每一个Dalvik 应用作为一个独立的linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。

2、Dalvik诞生消亡史

3、Dalvik 特点

二、ART虚拟机

1、ART概念介绍

2、基本概念和名词

3、ART 如何运作

(1)4.4~7.0

最开始ART只采用AOT编译,在App安装时就编译所有代码存储在本地,打开App直接运行,这样做的优点是应用运行速度变快,缺点也很明显,App安装时间明显变长,而且占用存储空间较大

(2)7.0

Android N之后对于ART进行改动,重新引入了JIT编译,结合使用AOT/JIT混合编译,主要机制如下:

(3)8.0

Android 8.0引入了.vdex文件,它里面包含 APK 的未压缩 DEX 代码,以及一些用于加快验证速度的元数据.

4、ART垃圾收集器优化

5、ART时间线

6、Dalvik VM 和 ART VM 有什么区别

总结

核心内容就一句话:App安装时不编译代码只校验合法性,运行时通过解释器执行,将运行频繁的代码进行编译放到内存缓存并且记录在本地配置文件,后台线程编译配置文件记录的方法存放到.odex文件,再次运行App时优先读.odex文件中编译后的代码,然后重复这个过程。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>