一. Zygote 是什么?
英文翻译过来为 `受精卵`,由此联想可见Zygote在Android 启动时候的作用为不断分裂,这也是Android平台非常基础的进程。
通俗的来讲在 Java 中,不同的虚拟机实例可以为不同的应用分配不同的内存。但如果Android系统为每一个应用启动不同的 VM 实例,就会消耗大量的内存以及时间。因此,为了克服这个问题,Android系统创造了“Zygote”。
二、启动系统时如何呢?
bootloader启动内核和init进程,init进程会分裂出很多守护进程的linux进程,这些进程处理底层硬件相关接口。
init进程会启动Zygote进程,他初始化了第一个VM并且预加载了framework和app所需的通用资源,然后它开启socket来监听请求,并且根据请求来孵化出新的VM来管理新的APP进程(这个过程是Zygote基于自身预加载的VM来孵化新的VM来管理新的APP进程
)
init进程启动Zygote后会启动runtime进程。Zygote会孵化出超级管理员进程-SystemServer, SystemServer会启动系统核心服务,如ActivityManagerService,硬件相关的Service等。
此时已经系统已经准备好启动第一个App进程-home进程
参考:
https://www.jianshu.com/p/a5532ecc8377
https://blog.csdn.net/dearsq/article/details/53647871
https://blog.csdn.net/turkeycock/article/details/50538971
网友评论