是为每个应用程序创建了Dalvik虚拟机实例,还是所有Android应用程序共享同一个Dalvik虚拟机实例?
答案 0 :(得分:56)
每个Android应用程序都在自己的进程中运行,并拥有自己的Dalvik虚拟机实例。已经编写了Dalvik,以便设备可以有效地运行多个VM。
Dalvik VM以Dalvik可执行文件(.dex
)格式执行文件,该格式针对最小内存占用进行了优化。
VM是基于寄存器的,运行由Java语言编译器编译的类,这些类已被包含的.dex
工具转换为dx
格式。
有关DVM的详细说明,请查看What is... The Dalvik Virtual Machine。
答案 1 :(得分:34)
Dalvik虚拟机专为Android而构建。它旨在解决电池寿命和处理能力问题,并且免费。
我们使用的是Dalvik VM而不是Java虚拟机(JVM),因为Java编译器,Java工具都是免费的,但JVM不是免费的,所以Google的Android开发人员已经制作了自己的虚拟机,并使其免费。
虚拟机是必要的,因为虚拟机有助于调试,作为虚拟计算机,以便我的应用程序可以以相同的方式运行不同的设备
答案 2 :(得分:30)
将.java
文件提供给java编译器(javac
)以生成.class
文件。
所有.class
个文件都会提供给dx
工具,以生成单个dex
文件。
将dex
文件提供给Dalvik VM以生成最终的机器代码。
最终机器代码将提供给CPU执行。
答案 3 :(得分:13)
所有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 click this的更多信息。
如果你想知道为什么DVM for android为什么不是JVM click this
答案 4 :(得分:1)
Dalvik 是一个运行每个Android应用程序的虚拟机。通过Dalvik,设备能够通过更好的内存管理运行多个虚拟机,因为Dalvik VM基于寄存器,因此内存效率高
每个Android应用程序都在自己的进程中运行,并拥有自己的Dalvik VM实例。 首先,Java编译器将Java文件转换为.class文件 .class文件被赋予“dx”工具,它将其转换为.dex格式 .dex文件被赋予DVM以生成机器代码 机器代码由CPU执行
.apk文件包含zip格式的.dex文件,可以在Dalvik VM上运行
为何选择Dalvik? 1. DVM专为电池寿命,处理能力而免费提供 2.我们使用的是DVM而不是JVM,因为JVM不是免费的 Dalvik VMs在所有移动设备上提供一致性,即一个应用程序将以相同的方式跨不同设备运行