Android 什么是Dalvik和Dalvik缓存?

Android 什么是Dalvik和Dalvik缓存?,android,dalvik,Android,Dalvik,我知道这可能是Android的一个基本问题。但是什么是Dalvik和Dalvik缓存?Dalvik是基于java的虚拟机,在Android上运行Android应用程序。Dalvik cache是Dalvik VM的缓存区域,它是在Dalvik VM优化应用程序以运行时创建的 如果您愿意,您可以在internet上查找有关Dalvik VM操作码与“普通”Java VM操作码之间差异的更多信息。Dalvik是Android使用的虚拟机。它通常被认为是Java虚拟机,尽管这并不完全正确。它使用与Ja

我知道这可能是Android的一个基本问题。但是什么是Dalvik和Dalvik缓存?

Dalvik是基于java的虚拟机,在Android上运行Android应用程序。Dalvik cache是Dalvik VM的缓存区域,它是在Dalvik VM优化应用程序以运行时创建的


如果您愿意,您可以在internet上查找有关Dalvik VM操作码与“普通”Java VM操作码之间差异的更多信息。

Dalvik是Android使用的虚拟机。它通常被认为是Java虚拟机,尽管这并不完全正确。它使用与Java相同的对象模型,其内存模型也几乎相同。但是dalvik VM是基于寄存器的VM,而Java VM是基于堆栈的

因此,它使用与Java完全不同的字节码。然而,Android SDK包含dx工具,用于将Java字节码转换为dalvik字节码,这就是为什么您能够用Java编写Android应用程序的原因

当你说“dalvik cache”时,我假设你指的是典型Android设备上的/data/dalvik cache目录。在Android上安装应用程序时,它会对该应用程序的dex文件(该文件包含应用程序的所有dalvik字节码)执行一些修改和优化。然后,它将生成的odex(优化的dex)文件缓存在/data/dalvik cache目录中,这样它就不必在每次加载应用程序时都执行优化过程


Dalvik缓存只不过是存储为可执行文件的应用程序代码的临时编译。由于这些可以从Dalvik缓存外的原始应用程序代码动态编译,因此您可以清除Dalvik缓存而不会受到任何实际惩罚。

Dalvik缓存不再是现代Android版本的一部分;Android 4.4 KitKat是最后一个使用这种结构的。有关更多详细信息,请参阅。

如果我删除这些Dalvik缓存怎么办?除了需要重新构建Dalvik缓存的应用程序需要时间加载外,是否会产生任何影响?正确。除了在重建过程中增加下一次加载时间外,这没有任何影响。正如有人在另一个重复问题上发布的一样,这是你的免费wiki链接“Dalvik缓存是你的Android的重要组成部分。你可以在这里读到更多关于它的信息:”既然VM是艺术的,为什么Android棒棒糖(版本5)仍然有Dalvik缓存?有人告诉我这是为了兼容性,但我注意到它占用了很多空间(大约900MB)。编译后的代码现在存储在dalvik缓存中,并带有art。根据dalvik或art的存在,这些代码可能是字节码或二进制图像。不是图形图像。