0%

Zygote剖析

Zygote

任何系统启动过程的本质都是要建立一套系统运行所需的环境。

背景

Zygote 进程运行时,会初始化 Dalvik虚拟机,并启动它。
Android的应用程序是由Java编写的,它们不能直接以本地进程的形态运行在Linux 上,只能运行在Dalvik虚拟机中。

并且,每个应用程序都运行在各自的虚拟机中,

应用程序每次运行都要重新初始化并启动虚拟机,这个过程会耗费相当长时间,是拖慢应用程序的原因之一。

因此,在Android 中,应用程序运行前,Zygote进程通过共享已运行的虚拟机的代码与内存信息,缩短应用程序运行所耗费的时间。并且,它会事先将应用程序要使用的Android Framework中的类与资源加载到内存中,并组织形成所用资源的链接信息。新运行的Android应用程序在使用所需资源时不必每次重新形成资源的链接信息,这会节省大量时间,提高程序运行速度。

反推 一般Zygote都是Android应用程序。

  1. init进程系统启动后运行在用户空间中的首个进程。
  2. init进程启动完系统运行所需要的各种 Daemon后。
  3. 启动Zygote进程。