📘 2025 · 系统启动深潜
Zygote 进程与 Java 世界唤醒
30 章 · 从起源到未来
🔥 Android 启动核心
⚡ Zygote · app_process · ART
🎯 友好色系
📁 30个章节 · 点击卡片跳转
01
Zygote的前世今生
起源
Zygote进程的起源、在Android系统中的定位、与init进程的关系
02
Zygote的启动入口
init.rc
解析init.rc中Zygote的service定义、启动参数详解
03
app_process的奥秘
可执行文件
Zygote的可执行文件app_process、main函数的调用链
04
AndroidRuntime登场
Runtime
AndroidRuntime类的初始化、startReg与startVm函数
05
Java虚拟机创建
JVM
JNI_CreateJavaVM的调用、JavaVMOption的配置
06
预加载类资源
Class
Zygote预加载的Java类列表、预加载的时机与意义
07
预加载系统资源
Resources
主题、Drawable、布局等资源的预加载过程
08
Zygote的Socket通道
Socket
创建LocalServerSocket、等待AMS请求的循环
09
Zygote的fork机制
fork()
fork()系统调用的使用、写时复制技术的应用
10
Zygote的权限分离
uid/gid
进程的uid/gid设置、SELinux上下文切换
11
SystemServer进程启动
核心
Zygote.forkSystemServer的完整流程
12
SystemServer的main方法
调用链
从native层到Java层的调用链
13
SystemServer的线程管理
Binder
Binder线程池的创建、关键系统服务注册
14
Zygote的启动模式
热/冷
热启动与冷启动的区别、Zygote的64位模式
15
Zygote的日志系统
logcat
logcat中Zygote相关日志的解读、调试技巧
16
Zygote的异常处理
Crash
fork失败的处理、Zygote的crash恢复机制
17
Zygote的内存管理
堆
Dalvik/ART堆的初始化、GC策略的继承
18
Zygote的进程模型
进程树
Zygote与子进程的关系、进程树的构建
19
Zygote的启动优化
优化
预加载策略的演进、启动速度的优化手段
20
Zygote的跨版本演进
历史
Android 4.4到Android 14的Zygote变化
21
Java世界的唤醒
线程
从Zygote到第一个Java线程的创建
22
ClassLoader的建立
类加载
PathClassLoader与BootClassLoader的初始化
23
JNI函数注册
JNI
AndroidRuntime中JNI方法的动态注册过程
24
Zygote的配置文件
properties
/system/etc/zygote.properties的作用
25
Zygote的调试接口
strace/gdb
strace跟踪Zygote、gdb调试Zygote的方法
26
Zygote的安全机制
安全
ASLR、PIE、RELRO在Zygote中的应用
27
Zygote与SurfaceFlinger
图形
图形系统初始化与Zygote的关系
28
Zygote的进程优先级
nice/oom
nice值的设置、oom_adj的调整
29
Zygote的测试方法
测试
单元测试、集成测试、压力测试
30
Zygote的未来展望
Treble
Project Treble对Zygote的影响、微内核化趋势