Files
mkdocs/docs/android面试/系统原理/Zygote进程.md
2026-01-15 11:53:37 +08:00

1.9 KiB
Raw Permalink Blame History

Zygote进程

目录


Zygote作用

Zygote 简介

// ZygoteAndroid 系统的第一个 Java 进程
// - 预加载类和资源
// - 孵化应用进程
// - 共享代码和资源

Zygote 优势

// 1. 快速启动:预加载类和资源
// 2. 内存共享:共享代码和资源
// 3. 安全性:进程隔离

Zygote启动流程

启动流程

1. Init 进程启动
2. 启动 Zygote 进程
3. Zygote 预加载类和资源
4. Zygote 进入循环,等待请求
5. 收到请求fork 新进程

Zygote进程创建

fork 进程

// Zygote 收到创建进程请求
// 1. fork() 创建新进程
// 2. 新进程继承 Zygote 的代码和资源
// 3. 新进程执行应用代码

进程创建流程

1. AMS 请求创建进程
2. Zygote 收到请求
3. Zygote.fork() 创建进程
4. 新进程执行 ActivityThread.main()
5. 应用进程启动完成

Zygote源码分析

关键类

// ZygoteInitZygote 初始化
// ZygoteServerZygote 服务器
// Zygote进程创建

关键方法

// main()Zygote 入口
// forkAndSpecialize():创建应用进程
// preload():预加载

面试常见问题

Q1: Zygote 的作用?

答案:

  • 预加载类和资源
  • 孵化应用进程
  • 共享代码和资源

Q2: Zygote 启动流程?

答案:

  1. Init 进程启动 Zygote
  2. Zygote 预加载
  3. Zygote 进入循环
  4. 收到请求fork 新进程

Q3: 为什么使用 Zygote

答案:

  1. 快速启动:预加载类和资源
  2. 内存共享:共享代码和资源
  3. 安全性:进程隔离

最后更新2024年