Dalvik是Android所使用的虚拟机。虽然它通常被认为是Java虚拟机,但这并不完全正确。它使用的对象模型与Java完全相同,其内存模型也非常相似。但是Dalvik虚拟机是基于寄存器的,而不是基于堆栈的Java虚拟机。因此,它使用的字节码与Java完全不同。但是,Android SDK包括dx工具,以将Java字节码转换为Dalvik字节码,这就是为什么您可以使用Java编写Android应用程序的原因。当您说“dalvik-cache”时,我想您指的是在典型的Android设备上可以找到的/data/dalvik-cache目录。在Android上安装应用程序时,它会对该应用程序的dex文件(包含应用程序的所有Dalvik字节码的文件)进行一些修改和优化。然后,它会将生成的odex(优化过的dex)文件缓存到/data/dalvik-cache目录中,以便在每次加载应用程序时不必执行优化过程。
Dalvik是基于Java的虚拟机,用于在Android上运行应用程序。Dalvik-cache是Dalvik VM的缓存区域,在Dalvik VM为运行您的应用程序进行优化时创建。如果您想了解Dalvik VM操作码与“普通”Java VM操作码之间的差异,可以在互联网上查找更多信息。
Dalvik缓存不再是现代Android版本的一部分了; Android 4.4 KitKat是最后一个使用此结构的版本。有关更多详细信息,请参见https://en.wikipedia.org/wiki/Dalvik_(software)。