为什么Android需要一个虚拟机(DVM)?

qmelpv7a  于 2022-10-09  发布在  Android
关注(0)|答案(3)|浏览(663)

虚拟机用于在不同的操作系统上运行应用程序(Java将代码编译成独立于操作系统的.class文件,该文件被解释为字节码)。因为Android应用程序运行在相同的操作系统(即Android)上,所以它不需要VM(我在这里可能是错的)。那么它为什么需要Dalvik VM呢?

of1yzvn4

of1yzvn41#

Android平台可以运行在不同的架构上-ARM、MIP和x86。为了抽象出为每个体系结构编译二进制文件的需要,VM开始发挥作用。它还为开发人员进行内存管理。

o4tp2gmn

o4tp2gmn2#

我们需要有人来编译和转换成字节码的Java类,这可以由解释器执行。

它类似于JVM...您有.Java文件,这些文件将由Java编译器编译成.class文件。类文件只不过是将由JVM运行的字节码。JVM可以驻留在任何平台(Windows、Linux或Unix)上。

在Android中,这些文件也会被编译成.dex文件,并由DVM运行。仅给出一个概念,当安装应用程序时,Android操作系统会分配唯一的Linux用户ID,每个应用程序都会分配一个DVM。因此,简而言之,每个应用程序都有自己的Linux进程、DVM和Linux用户ID。

Java文件被编译成.dex文件,与.class文件相比,.dex文件消耗的内存更少。

现在假设10个应用程序有10个单独的DVM,操作系统有10个进程要处理。

Android操作系统中的调度程序负责处理这10个进程……这就是为什么我们有Android活动生命周期的原因。

您需要DVM来维护每个进程(每个应用程序)的运行状态。

1tuwyuhd

1tuwyuhd3#

Android为什么需要一个虚拟机,是基于Google设计的Android API大量使用Java接口。Java本身通常在虚拟机上运行。

JVM本身是基于堆栈机器的VM,而Android的VM(称为Dalvik)是基于寄存器的VM(这是为了减少生成的代码和更快的速度,以便从使用Android的设备中获得更好的性能)

虚拟机的目的是能够通过模拟来抽象硬件。如果您创建一台虚拟机,并对其进行编译以在所有可能的硬件上运行,您将获得最初使Java流行起来的东西:一次编写、随处运行的可移植性。

您可以编写代码,而不必更改它并在您的虚拟机可以运行的任何硬件上运行它。

话又说回来,Android主要是用C(和C++?)构建的。但是操纵操作系统的API是通过Java接口的,因此您需要一个虚拟机。

相关问题