是为每个应用创建一个 Dalvik 虚拟机实例,还是所有 Android 应用共享同一个 Dalvik 虚拟机实例?
5 回答
每个 Android 应用程序都在自己的进程中运行,具有自己的 Dalvik 虚拟机实例。Dalvik 的编写使得一个设备可以高效地运行多个 VM。
Dalvik VM 以 Dalvik Executable ( .dex
) 格式执行文件,该格式已针对最小内存占用进行了优化。
VM 是基于寄存器的,并运行由 Java 语言编译器编译的类,这些类已被包含的工具转换为.dex
格式。dx
还可以查看What is... The Dalvik Virtual Machine,了解有关 DVM 的详细说明。
Dalvik 虚拟机是专门为 Android 构建的。它旨在解决电池寿命和处理能力问题,而且是免费的。
我们使用 Dalvik VM 代替 Java 虚拟机 (JVM),因为 Java 编译器、Java 工具是免费的,但 JVM 不是免费的,所以来自 Google 的 Android 开发人员制作了自己的虚拟机,并使其免费。
虚拟机是必要的,因为虚拟机作为虚拟计算机有助于调试,因此我的应用程序可以以相同的方式运行不同的设备
图示
将一个.java
文件提供给 java 编译器 ( javac
) 以生成该.class
文件。
所有.class
文件都提供给dx
工具以生成单个dex
文件。
该dex
文件被提供给 Dalvik VM 以生成最终的机器代码。
最终的机器码交给 CPU 执行。
所有apk的基本源代码都是java语言。当您构建这个项目时,所有 .java 文件都被转换为 .class 现在 adk 的 dx 工具将所有 .class 文件转换为 classes.dex 文件。这个 classes.dex 文件在 dalvik 虚拟机上执行。
有关 dalvik 虚拟机的更多信息:http ://www.slideshare.net/jserv/understanding-the-dalvik-virtual-machine
Dalvik 虚拟机旨在一次运行多个 VM。因此,每个应用程序都在自己的进程中运行,并拥有自己的 Dalvik 虚拟机实例,正如 @sahilMahajanMj 所说。
并且这个 classes.dex 文件进一步优化为 odex 文件并保存在 /dalvik/dalvik-cache
要了解有关 odex的更多信息,请单击此。
如果你想知道为什么 DVM for android 为什么不 JVM点击这个
Dalvik是一个虚拟机,每个 android 应用程序都在其中运行。通过 Dalvik,设备能够通过更好的内存管理运行多个虚拟机,因为 Dalvik 虚拟机是基于寄存器的,因此内存高效
每个 android 应用程序都在自己的进程中运行,具有自己的 Dalvik VM 实例。首先,Java 文件通过 java 编译器转换为 .class 文件 .class 文件提供给“dx”工具,该工具将其转换为 .dex 格式 .dex 文件提供给 DVM 以生成机器代码 机器代码由 CPU 执行
.apk 文件包含 zip 格式的 .dex 文件,可以在 Dalvik VM 上运行
为什么是达尔维克?1. DVM 专为电池寿命、处理能力及其免费而构建 2. 我们使用 DVM 而不是 JVM,因为 JVM 不是免费的