DVM/ART介绍

目录

1 什么是DVM

DVM是Dalvik Virtual Machine的缩写,是安卓虚拟机的缩写(为什么不叫AVM-Android Virtual Machine呢?原因是其作者以其祖上居住过的名为Dalvik的村子命名)。

在 Android 5.0 之前叫作 DVM,5.0 之后改为 ART(Android Runtime)

2 有什么用

Dalvik 是 Google 公司自己设计用于 Android 平台的 Java 虚拟机,Android 工程师编写的 Java 或者 Kotlin 代码最终都是在这台虚拟机中被执行的。

3 与JVM区别

  • Dalvik: 基于寄存器,编译和运行都会更快些
  • JVM: 基于栈, 编译和运行都会慢些

不过这里不是直接操作硬件的寄存器,而是在内存中模拟一组寄存器

  • Dalvik: 执行.dex格式的字节码,是对.class文件进行压缩后产生的,文件变小
  • JVM: 执行.class格式的字节码

传统 Class 文件是由一个 Java 源码文件生成的 .Class 文件,而 Android 是把所有 Class 文件进行合并优化,然后生成一个最终的 class.dex 文件。dex 文件去除了 class 文件中的冗余信息(比如重复字符常量),并且结构更加紧凑,因此在 dex 解析阶段,可以减少 I/O 操作,提高了类的查找速度

  • Dalvik : 一个应用启动都运行一个单独的虚拟机运行在一个单独的进程中
  • JVM: 只能运行一个实例, 也就是所有应用都运行在同一个JVM中