Cosa sta facendo il processo di zigote in Android L?


13

Sto cercando di capire le differenze specifiche nei tempi di esecuzione di Dalvik e ART. Mi rendo conto che ART non utilizza più la VM Dalvik, tuttavia, una delle prime cose che ho notato dopo aver installato l'anteprima di Android L era che il processo zygote è ancora in esecuzione. Se si fossero davvero sbarazzati della VM Dalvik, ciò non avrebbe reso inutile il processo zigote? Inoltre, dopo aver ispezionato il codice sorgente rilasciato tramite AOSP, rimane gran parte di Dalvik.


1
Difficile da sapere, è una versione per sviluppatori e FAR dal completo. Al momento ci sono un sacco di Kitkat / Jellybean cuciti al suo interno solo per farlo funzionare e avviarsi.
RossC,

Essendo ancora una " anteprima per sviluppatori ", potrebbe davvero non avere molto senso speculare (anche se seguo la spiegazione di Dan). Potrebbe essere come ha descritto Dan, oppure potrebbe essere un "residuo" non ancora "completamente obsoleto". Quando funziona ancora su L-Release, è una cosa diversa.
Izzy

Risposte:


14

Zygote non è davvero legato a Dalvik, è solo un processo di init. Zygote è il metodo utilizzato da Android per avviare le app. Invece di dover ricominciare da capo ogni nuovo processo, caricando di nuovo l'intero sistema e il framework Android ogni volta che si desidera avviare un'app, esegue tale processo una volta, quindi si interrompe a quel punto, prima che Zygote abbia fatto qualcosa di specifico per l'app . Quindi, quando si desidera avviare un'app, il processo Zygote esegue il fork e il processo figlio continua da dove era stato interrotto, caricando l'app stessa nella VM.

Sebbene questo metodo sia stato originariamente progettato per Dalvik, non c'è motivo per cui ART non dovrebbe comportarsi esattamente allo stesso modo. Non è necessario compilare le app JIT mentre sono in esecuzione, ma ha ancora un sacco di roba Java indipendente dall'app da caricare (cioè l'intero framework Android), quindi ha senso usare lo stesso fork quando metodo caricato per avviare nuovi processi.

È naturale in un progetto così grande che ci sarebbero altri resti di Dalvik che sono ancora utili in un mondo post-Dalvik, quindi non dovresti essere sorpreso che ci sia altro codice che è stato originariamente scritto per far parte o lavorare con Dalvik, che è ancora in circolazione per essere utilizzato da ART.


Corrisponde alla mia comprensione di Zygote (essendo un non-sviluppatore). Dal "punto di vista dell'utente", probabilmente rende più facile pensare a Zygote come "server delle applicazioni", fungendo da "livello di astrazione" tra le app e il sistema operativo (in qualche modo come HAL fa per astrarre l'hardware): non importa cos'è "sotto" (Dalvik o ART), l'interfaccia si occupa di "roba"?
Izzy

1
Potrebbe rendere più semplice pensare a Zygote come a un server delle applicazioni, ma non è una descrizione molto accurata. È solo la parte del sistema operativo che avvia le app ed è molto sul lato del sistema operativo del confine tra app e SO.
Dan Hulme,

Grazie, quindi almeno la mia "comprensione di base" era corretta (sono consapevole che il "application server" non è accurato, ma più facile da capire da un "utente normale" - quindi facciamolo " servizio applicativo ", per portarlo avanti il lato SO;)
Izzy

Ciò che esiste nel codice sorgente non sono "avanzi" e non siamo nell'era post-Dalvik! Il bitcode Dalvik è ancora l'IR utilizzato. Anche con l'impostazione più alta, non tutto è compilato AOT e ci sono ancora alcune cose che devono essere interpretate. Quindi, per questi, c'è DalvikVM . Inoltre, i dispositivi con poca memoria utilizzeranno meno AOT più interpretazione. Infine, zygote inserisce un sacco di classi utilizzate di frequente, che possono risparmiare spazio in quanto possono essere condivise tra più applicazioni.
Paschalis,

@Paschalis stai confondendo JIT compilando con DalvikVM. Solo perché le versioni più recenti della compilation ART do JIT (just-in-time), non significa che Dalvik sia ancora in circolazione. Oracle Java esegue anche la compilation JIT, non significa che usi Dalvik
Martin Konecny ​​il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.