一句话描述:
把 Chrome 多进程架构拆成顺口溜、餐厅故事、时间线和面试话术,用场景联想代替死记硬背,10 秒记住「1 页 4 进程」,30 秒答清面试追问。
给你几套好记、好玩的方法,可以混着用。
方法一:把 Chrome 想成一家「餐厅」
| 进程 | 餐厅角色 | 一句话 |
|---|---|---|
| 浏览器进程 | 大堂经理 | 管门面、接待客人、调度后厨、管仓库(存储) |
| 渲染进程 | 厨师(每桌一个) | 把食材(HTML/CSS/JS)做成菜(网页),关在厨房沙箱里 |
| GPU 进程 | 摆盘师 | 负责把菜摆得好看、特效炫(3D、动画、整个 UI 绘制) |
| 网络进程 | 采购员 | 专门出去买菜(加载网络资源) |
| 插件进程 | 外聘艺人 | 来表演 Flash 之类,单独一间房,演砸了不影响整家店 |
开 1 个页面 = 4 个进程 :经理 + 厨师 + 摆盘师 + 采购员。
有插件再 +1:多来一个外聘艺人。
方法二:谐音口诀「网浏渲 G 插」
按打开页面的顺序记:
网 先加载 → 浏 览器管界面 → 渲 染出页面 → G PU 画出来 → 有 插件再加一个
念三遍:网浏渲 G 插(像「往流宣 G 差」)。
方法三:首字母故事「B-R-G-N-P」
编一个小故事:
B oss(浏览器)坐在前台管事;
R ender(渲染)在沙箱里炒菜;
G raphics(GPU)负责特效和摆盘;
N et(网络)出去拿货;
Plugin(插件)在隔壁房间,崩了也不连累别人。
方法四:「谁最老、谁最晚」------记演变史
书里有两个时间锚点,很好记:
- GPU 进程 :Chrome 刚发布时没有 ,后来网页和 UI 都要 GPU 画,才加进来 → 记:「GPU 是后来请来的」
- 网络进程 :以前在浏览器进程里,最近才独立 → 记:「网络从经理办公室搬出去了」
插件进程:一直就有,因为插件爱崩 → 「插件单独关小黑屋」
方法五:对应你书里的「4 个进程」公式
原文结论(第 172 行)可以压成一句:
1 页 = 网 + 浏 + G + 渲 = 4
有插件 +1
打开 Chrome 任务管理器时,对着数:网络、浏览器、GPU、渲染------数到 4 就停;看到 Flash 之类再多一个。
方法六:联想「你打开网页时发生了什么」
按时间线记(比背定义轻松):
你点链接
→ 网络进程:去服务器拿 HTML/CSS/JS
→ 渲染进程:Blink 排版 + V8 跑 JS,变成可点的页面
→ GPU 进程:把页面画到屏幕上(包括动画、3D)
→ 浏览器进程:地址栏、标签、书签、你点的按钮,全程在管
→ (可选)插件进程:页面里嵌了 Flash 等才出现
记住这条链,职责自然就记住了。
小测验(自测用)
- 死循环 JS 卡死的是哪个进程?→ 渲染(只卡当前标签)
- 3D CSS 最初是为了谁加的?→ GPU
- 以前和浏览器挤在一起、后来独立的?→ 网络
- 沙箱关的是谁?→ 渲染(还有插件)
- 地址栏、书签存在谁管?→ 浏览器
顺口溜版(10 秒背完)
一开页,四兄弟:网拿菜,渲炒菜,G 摆盘,经理管。
有插件,加一间,崩了也不连累全店。
进阶版(带职责):
网进程去拉货,渲进程做网页,
GPU 来画画,浏览器当家;
插件单独屋,崩溃不牵连。
面试 30 秒版
Chrome 采用多进程架构,主要解决单进程时代不稳定、不流畅、不安全的问题。
打开一个页面,默认至少有 4 个进程 :网络进程 负责资源加载;浏览器进程 负责 UI、用户交互和子进程管理;渲染进程 负责 HTML/CSS/JS 转成交互页面,跑 Blink 和 V8,默认每标签一个,且在沙箱中运行;GPU 进程负责 GPU 绘制。
如果页面有插件,还会多一个插件进程,与主流程隔离,避免插件崩溃影响整体。
多进程的代价是内存占用更高、架构更复杂,所以 Chrome 也在向面向服务的架构演进。
实用建议
- 别一次背 5 个:先记「4 个必有」,插件当 bonus。
- 打开任务管理器对照看 :
更多工具 → 任务管理器,比背文字直观。 - 用餐厅或流水线故事串起来,比孤立背「渲染进程负责...」省力。