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

时间:2015-06-28 11:24:58

标签: android virtual-machine dalvik vm-implementation

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





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




2 个答案:

答案 0 :(得分:5)

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

安全区。

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

失败隔离。

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

答案 1 :(得分:1)

  

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

这是一个设计决定,在我看来,是为了保持简单。每个进程都在自己的vm中运行。所有资源都分配给该流程,而vm在内部不会协调对资源的访问,例如: FileDescriptor s,I/O等。我从未听说过multiprocess vm(一个允许在其中运行多个进程的虚拟机),但我找到了article你可以给你一个见解。