Я пытаюсь выяснить конкретные различия во времени выполнения Dalvik и ART. Я понимаю, что ART больше не использует виртуальную машину Dalvik, однако одной из первых вещей, которые я заметил после установки предварительного просмотра Android L, было то, что процесс zygote все еще выполняется. Если они действительно избавятся от виртуальной машины Dalvik, не сделает ли это процесс зиготы бесполезным? Кроме того, после проверки исходного кода, выпущенного через AOSP, большая часть Dalvik все еще остается.
dalvik
art
5.0-lollipop
Джон
источник
источник
Ответы:
Zygote на самом деле не связан с Dalvik, это просто процесс инициализации. Zygote - это метод, используемый Android для запуска приложений. Вместо того, чтобы запускать каждый новый процесс с нуля, загружая всю систему и платформу Android заново каждый раз, когда вы хотите запустить приложение, он выполняет этот процесс один раз, а затем останавливается в этой точке, прежде чем Zygote сделает что-нибудь специфичное для приложения. , Затем, когда вы хотите запустить приложение, процесс Zygote разветвляется, и дочерний процесс продолжает работу с того места, на котором он остановился, загружая само приложение в виртуальную машину.
Хотя этот метод был изначально разработан для Dalvik, нет причин, по которым ART не должен вести себя точно так же. Он не должен JIT-компилировать приложения во время их работы, но в нем все еще есть много Java-независимых приложений (например, вся платформа Android) для загрузки, поэтому имеет смысл использовать один и тот же ответвление, когда загруженный метод для запуска новых процессов.
Это естественно для такого большого проекта, что будут другие остатки от Dalvik, которые все еще полезны в мире после Dalvik, поэтому вы не должны удивляться, что есть другой код, который был первоначально написан, чтобы быть частью или для работать с Dalvik, который все еще существует для использования ART.
источник