将多个应用程序运行在一个进程中会有很多原因导致失败,以下是两个原因: 安全区域。 如果两个不互信的应用程序能够查看彼此的内存,即使它们使用本地代码或反射,这也是不安全的。 失败隔离。 如果一个进程泄漏内存并崩溃,那只会对自己造成伤害。
为什么每个应用程序都有一个单独的虚拟机(Dalvik/ART)实例?(这是为什么)这是一项设计决策,我认为这样做是为了保持简单。每个进程都在自己的vm中运行。所有资源都分配给该进程,vm在内部不必协调对资源的访问,例如FileDescriptor、I/O等。我从未听说过"多进程vm"(允许多个进程在其中运行的虚拟机),但我找到了一篇文章,你可以从中了解更多。