Estou tentando descobrir as diferenças específicas nos tempos de execução de Dalvik e ART. Sei que o ART não usa mais a Dalvik VM, no entanto, uma das primeiras coisas que notei após a instalação da visualização do Android L foi que o processo zygote ainda está em execução. Se eles realmente se livrassem da VM Dalvik, isso não tornaria o processo do zigoto inútil? Além disso, ao inspecionar o código fonte liberado via AOSP, uma grande parte do Dalvik ainda permanece.
dalvik
art
5.0-lollipop
John
fonte
fonte
Respostas:
O Zygote não está realmente ligado ao Dalvik, é apenas um processo de inicialização. O zigoto é o método que o Android usa para iniciar aplicativos. Em vez de ter que iniciar cada novo processo do zero, carregando todo o sistema e a estrutura do Android novamente toda vez que você deseja iniciar um aplicativo, ele faz esse processo uma vez e depois pára nesse ponto antes que o Zygote faça algo específico do aplicativo . Em seguida, quando você deseja iniciar um aplicativo, o processo do Zygote se bifurca e o processo filho continua de onde parou, carregando o próprio aplicativo na VM.
Embora esse método tenha sido originalmente projetado para Dalvik, não há razão para que o ART não se comporte exatamente da mesma maneira. Ele não precisa compilar aplicativos JIT enquanto eles estão em execução, mas ainda tem muitas coisas Java independentes de aplicativo para carregar (ou seja, toda a estrutura do Android); portanto, faz sentido usar o mesmo fork quando método carregado para iniciar novos processos.
É natural em um projeto tão grande que existam outras sobras da Dalvik que ainda são úteis no mundo pós-Dalvik; portanto, não se surpreenda que haja outro código que foi originalmente escrito para fazer parte ou trabalhe com a Dalvik, que ainda existe para o ART usar.
fonte