为什么Android上的每个应用程序都有单独的VM(Dalvik/ART)实例?

pul*_*ion 7 android virtual-machine dalvik vm-implementation

正如标题所述,
为什么Android上的每个App都有单独的VM(Dalvik/ART)实例?(需要它)

如果Android操作系统选择了单个虚拟机运行所有应用程序的模型,会发生什么?

Jes*_*son 5

在单个进程中运行多个应用程序不起作用的原因有很多; 这是两个:

安全区.

两个不相互信任的应用程序不应该能够查看彼此的内存,即使它们使用本机代码或反射也是如此.

失败隔离.

如果进程泄漏内存并崩溃,则只会损害自身.


Bla*_*elt 1

为什么每个应用程序都有一个单独的VM(Dalvik/ART)实例?(需要它)

这是一个设计决策,在我看来,是为了保持简单。每个进程都以自己的方式运行vm。所有资源都分配给该进程,并且vm在内部不协调对资源的访问,例如FileDescriptorsI/O等。我从未听说过multiprocess vm(允许多个进程在其中运行的虚拟机),但我发现了一个这篇文章可以给你一个见解。