【发布时间】:2011-11-24 08:55:41
【问题描述】:
我知道这可能是 Android 中的一个基本问题。但是什么是 Dalvik 和 dalvik-cache?
【问题讨论】:
我知道这可能是 Android 中的一个基本问题。但是什么是 Dalvik 和 dalvik-cache?
【问题讨论】:
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 上运行 Android 应用程序。 Dalvik-cache 是 Dalvik VM 的缓存区,它是在 Dalvik VM 优化你的应用运行时创建的。
如果需要,您可以在 Internet 上查找有关 Dalvik VM 操作码和“普通”Java VM 操作码之间差异的更多信息。
【讨论】:
Dalvik 缓存只是将应用程序代码临时编译为可执行文件。由于这些可以从位于 Dalvik 缓存之外的原始应用程序代码动态编译,因此您可以清除 Dalvik 缓存而不会受到任何实际损失。
【讨论】:
Dalvik 缓存不再是现代 Android 版本的一部分; Android 4.4 KitKat 是最后一个使用这种结构的。详情请见https://en.wikipedia.org/wiki/Dalvik_(software)。
【讨论】: