Dalvik Virtual Memory: ¿alguien puede explicar cómo funciona el cigoto? Además, ¿qué se entiende exactamente por sucio sucio y sucio privado?

Zygote es un demonio cuyo objetivo es lanzar aplicaciones. Init.rc desencadena el inicio del proceso después de Service Manager y otros, pero en realidad lo inicia app_process.
Zygote es un demonio cuya única misión es lanzar aplicaciones. Esto significa que Zygote es el padre de todo el proceso de la aplicación . Cuando app_process inicia Zygote, crea la primera máquina virtual Dalvik y llama al método main () de Zygote. Una vez que se inicia Zygote, precarga todas las clases y recursos Java necesarios, inicia System Server y abre un socket / dev / socket / zygote para escuchar las solicitudes de inicio de aplicaciones. El servidor del sistema como vimos en la publicación anterior es un proceso completo separado de su padre. Una vez creado, comienza a inicializar todos los diferentes Servicios del sistema e inicia el Administrador de actividades.
Zygote recibe una solicitud para iniciar una aplicación a través de / dev / socket / zygote. Una vez que sucede, activa una llamada fork () . Aquí es donde actúan las virtudes de un gran diseño. Cuando un proceso se bifurca, crea un clon de sí mismo. Se replica en otro espacio de memoria. Esto se hace de manera bastante eficiente. Cuando esto le sucede a Zygote, crea una nueva máquina virtual Dalvik exacta y limpia, precargada con todas las clases y recursos necesarios que cualquier aplicación necesitará. Esto hace que el proceso de crear una VM y cargar recursos sea bastante eficiente. Pero el diseño va más allá. Como sabemos, Android se ejecuta en Linux. El kernel de Linux implementa una estrategia llamada Copiar en escritura (COW). Lo que esto significa es que durante el proceso de la bifurcación, la memoria no se copia en otro espacio. Se comparte y se marca como copia en escritura . Lo que significa que cuando un proceso intenta modificar esa memoria, el kernel interceptará la llamada y hará la copia de esa pieza de memoria. En el caso de Android, esas bibliotecas no se pueden escribir. Esto significa que todos los procesos bifurcados de Zygote están utilizando exactamente la misma copia de las clases y recursos del sistema. Otro beneficio es el ahorro real de memoria. No importa cuántas aplicaciones se inicien, el aumento en el uso de la memoria será mucho menor.

Todas las asignaciones de almacenamiento dinámico de Dalvik y nativas que realice serán RAM sucias privadas; Dalvik y las asignaciones nativas que comparte con el proceso Zygote son RAM sucias compartidas.

para más detalles-:
http://www.sersc.org/journals/IJ…