是否为每个应用程序创建了Dalvik虚拟机实例?

时间:2012-11-27 05:08:27

标签: android dalvik

是为每个应用程序创建了Dalvik虚拟机实例,还是所有Android应用程序共享同一个Dalvik虚拟机实例?

5 个答案:

答案 0 :(得分:56)

每个Android应用程序都在自己的进程中运行,并拥有自己的Dalvik虚拟机实例。已经编写了Dalvik,以便设备可以有效地运行多个VM。

Dalvik VM以Dalvik可执行文件(.dex)格式执行文件,该格式针对最小内存占用进行了优化。

VM是基于寄存器的,运行由Java语言编译器编译的类,这些类已被包含的.dex工具转换为dx格式。

有关DVM的详细说明,请查看What is... The Dalvik Virtual Machine

答案 1 :(得分:34)

  1. Dalvik虚拟机专为Android而构建。它旨在解决电池寿命处理能力问题,并且免费

  2. 我们使用的是Dalvik VM而不是Java虚拟机(JVM),因为Java编译器,Java工具都是免费的,但JVM不是免费的,所以Google的Android开发人员已经制作了自己的虚拟机,并使其免费。

  3. 虚拟机是必要的,因为虚拟机有助于调试,作为虚拟计算机,以便我的应用程序可以以相同的方式运行不同的设备

  4. 画报表示

    IMG

答案 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在所有移动设备上提供一致性,即一个应用程序将以相同的方式跨不同设备运行