Почему существует отдельный экземпляр VM (Dalvik / ART) для каждого приложения на Android?

Как гласит название,
Почему существует отдельный экземпляр VM (Dalvik / ART) для каждого приложения на Android? (Необходимость в нем)

И что могло бы произойти, если бы ОС Android выбрала модель, где одна виртуальная машина запускает все приложения?

Solutions Collecting From Web of "Почему существует отдельный экземпляр VM (Dalvik / ART) для каждого приложения на Android?"

Существует много причин, по которым запуск нескольких приложений в одном процессе не работает; Вот два:

Зоны безопасности.

Два приложения, которые не доверяют друг другу, не могут просматривать память друг друга, даже если они используют собственный код или отражение.

Отказоустойчивость.

Если процесс утечки памяти и сбоев, он вредит только себе.

Почему для каждого приложения есть отдельный экземпляр VM (Dalvik / ART) (необходимость в нем)

Это дизайнерское решение, и, на мой взгляд, сделано, чтобы сохранить его простым. Каждый процесс работает в собственном vm . Все ресурсы выделены этому процессу, а vm внутри не имеет возможности координировать доступ к ресурсам, например FileDescriptor s, I/O и т. Д. Я никогда не слышал о multiprocess vm (vm, который позволяет запускать несколько процессов в Это), но я нашел статью, в которой вы могли бы дать вам представление.