Dalvik虚拟机是基于寄存器的虚拟机。它是由丹·伯恩斯坦(Dan Bornstein)设计和编写的,是其他Google工程师的贡献,是Android手机平台的一部分。 Dalvik虚拟机是以Bornstein的名字命名的,它以冰岛Eyjafjörður的渔村“Dalvík”命名,他的一些祖先曾居住于此。
DVM的工作
Java编译器(javac)将Java源代码转换为Java字节码(.class)。然后,DEX编译器将此文件(.class)转换为Dalvik字节码,即“ .dex”文件。
应用
如上所述,对于Android,Google开发了新的虚拟机。它使用CPU的寄存器来存储操作数。因此,不需要任何推送和弹出指令。因此使执行速度更快。指令在虚拟寄存器上运行,这些虚拟寄存器是主机设备中的虚拟寄存器存储位置。基于寄存器的模型擅长优化并在低内存上运行。它们可以存储常见的子表达式结果,以后可以再次使用。在基于堆栈的模型中根本不可能做到这一点。 Dalvik虚拟机使用自己的字节码并运行“ .dex”(Dalvik可执行文件)文件。
好处
- DVM仅支持Android操作系统。
- 在DVM中,可执行文件是APK。
- 执行速度更快。
- 从Android 2.2 SDK开始,Dalvik拥有自己的JIT(Just In Time)编译器。
- DVM的设计使设备可以有效地运行虚拟机的多个实例。
- 应用程序有自己的实例。
缺点
- DVM仅支持Android操作系统。
- 对于DVM,很少有可用的Re-Tools。
- 与注册机器相比,需要更多的指令才能实现相同的高级代码。
- 由于安装了dex,因此应用程序安装需要花费更多时间。
- 需要更多内部存储。