为什么在安卓系统中每个应用都有独立的虚拟机实例(Dalvik/ART)?

7
作为标题所述,为什么Android上的每个应用程序都有一个单独的VM(Dalvik/ART)实例?(需要它的原因)
如果Android操作系统选择了一个单一的VM运行所有应用程序的模型,会发生什么?

我知道Dalvik会这样做,但ART也是吗?你确定吗? - Ahmed Hegazy
2个回答

5

将多个应用程序运行在一个进程中会有很多原因导致失败,以下是两个原因:

安全区域。

如果两个不互信的应用程序能够查看彼此的内存,即使它们使用本地代码或反射,这也是不安全的。

失败隔离。

如果一个进程泄漏内存并崩溃,那只会对自己造成伤害。


1
为什么每个应用程序都有一个单独的虚拟机(Dalvik/ART)实例?(这是为什么)
这是一项设计决策,我认为这样做是为了保持简单。每个进程都在自己的vm中运行。所有资源都分配给该进程,vm在内部不必协调对资源的访问,例如FileDescriptor、I/O等。我从未听说过"多进程vm"(允许多个进程在其中运行的虚拟机),但我找到了一篇文章,你可以从中了解更多。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接