通过之前的源码 分析 我们 看到了zygote 的源码 以及它里面的一些东西。 然后我这里画了一个图来 总结一下
zygote 是负责fork 出一些其他进程的。我们的app 启动 的主进程 都是通过zygote 来进行的,那么为什么要通过zygote 来进行fork 为什么不新建了进程呢。。 其实是因为 zygote 在创建的时候预加载了一些 资源 如 系统库 opengl android 等等 还有 系统类 一些资源,会做一些预加载工作。linux 中有一个 写时复制 技术(copy on write ) 就是 子进程 会 拥有与父进程 相同的资源 。所以 我们通过fork 出来的进程 就会共享这些预加载的资源 。
关于copy on write 技术可以看看这篇文章