🧠 揭开浏览器底层的秘密:为什么一个 Chrome 能跑这么快又这么稳?
当你每天打开 Chrome 浏览器上网时,也许没有想过:
一个看似简单的浏览器窗口背后,其实是一个堪比操作系统的小型软件帝国。
它就像一座高度自动化的工厂------
多个车间(进程)、每个车间内部又有流水线(线程),
互不干扰又紧密协作。
🚪 一、打开 Chrome 的那一刻,到底发生了什么?
当你双击 Chrome 图标,就相当于启动了一家"浏览器工厂"。
此时会创建一个唯一的主进程(Browser Process)
我们打开任务管理器,此时发现为什么有那么多chrome,"我不是只打开了一个吗"
事实上,这些不同的chrome.exe代表着Chrome浏览器的不同进程 ,他们的PID 也不一样
主进程负责:
控制整座"工厂"
打开/关闭标签页
管理其他进程(渲染、网络、GPU...)
负责外壳界面(地址栏、书签栏)
并且会陆续派生出多个"部门"(子进程):
🌐 网络进程
🎨 渲染进程
🖥 GPU 进程
📦 存储进程
🔌 插件进程
Chrome正是采用了这种多进程架构使得它跑的又快又稳
🏭 二、为什么 Chrome 要采用 "多进程架构"?
对比一下过去的 IE,"单进程浏览器"是什么体验?
所有工作都堆到一个进程里:
页面渲染
JavaScript 执行
网络请求
插件加载
UI 显示
结果就是:
一个页面卡死,全浏览器陪葬。
这就像所有机器在一间屋子里,某个机台坏了,整间工厂停工。
而 Chrome 则是:
每个主要功能分配单独进程,各自独立、互不影响:
例如:
A 页面崩了,不影响 B 页面
插件崩溃,不影响渲染页面
GPU 挂掉,不会导致浏览器关闭
Chrome 采用多进程后,实现了三个关键目标:
好处
解释
更稳定
单个进程崩溃被隔离
更安全
进程沙盒化,网页无法直接操作用户文件
更流畅
大任务可分散到不同 CPU 核心上
🔍 三、Chrome 中到底有哪些进程?
1)浏览器主进程(Browser Process)------大总管
所有标签页、插件、下载器、历史记录管理......
都归他管。
这是 Chrome 的大脑。
2)渲染进程(Renderer Process)------把网页画出来
每一个标签页 默认一个独立渲染进程:
渲染进程包含两个模块:
🔹 Blink 排版引擎
解析 HTML / CSS
计算布局
绘制页面
🔹 V8 JavaScript 引擎
执行页面 JS
执行 DOM 操作
执行事件循环(Event Loop)
渲染进程本质上做一件事:
把代码变成可交互网页。
3)GPU 进程------帮你加速动画、3D、渲染等
Chrome 后来加入 GPU 进程,用显卡来处理:
CSS 动画
WebGL
Canvas 绘制
页面合成
这也是为什么现在网页滚动、动画都非常丝滑。
4)网络进程(Network Service)
负责所有:
DNS
HTTP / HTTPS
下载资源
上传数据
这样:
即使渲染进程卡住,网络依旧正常进行。
5)存储进程(Storage Service)
包括:
Cookies
LocalStorage
IndexedDB
缓存 Cache
独立管理的好处是:
渲染进程即使崩溃了,也不会导致数据丢失。
6)插件进程(Plugin Process)
用于运行:
Flash(已被淘汰)
PDF Viewer
第三方扩展的一些逻辑
插件导致浏览器崩溃的时代已经过去。
🧵 四、进程 vs 线程:它们的分工是什么?
在此之前,我们先引入线程的概念:
线程是进程中可被操作系统调度的最小执行单元
如果说:
进程: 工厂的一个车间(隔离、安全)
线程: 车间里的工人(执行任务)
渲染进程内部有多条线程:
主线程(执行 JS、布局、渲染)
合成线程(绘制图层)
光栅线程(位图生成)
IO 线程(网络、文件等异步任务)
JS 是单线程的,但渲染进程不是。
🔁 五、每一个标签页都是独立进程吗?
当我们只有一个标签页时: 而当我们添加一个新的标签页时:
此时每个标签页的进程是:
这些显示了:
每个标签页是独立进程
每个工具、插件都有独立进程
Network / GPU / Storage 都独立
打开Chrome 任务管理器能很好的清楚地展示内部结构。
🧠 六、单进程 vs 多进程:为什么差距那么大?
🔹单进程浏览器(IE)
所有任务排队执行:
JS 执行阻塞
渲染阻塞
网络阻塞
用户交互阻塞
只要有一个环节卡住,全卡。
🔹多进程浏览器(Chrome)
多个线程、多个进程协同处理:
JS 执行不再阻塞渲染
网络和渲染分离
页面崩溃不会影响整个浏览器
利用多核 CPU 实现真正的并行
浏览器从"单核发动机"变成"多引擎战斗机"。
🎯 七、总结:为什么 Chrome 能这么快、这么稳?
Chrome 的底层本质是一种:
"操作系统级的架构"------网页是应用,渲染进程是沙盒。
得益于:
多进程隔离
多线程并行
GPU 加速
V8 高性能 JS 引擎
Blink 高速渲染引擎
Chrome 才能做到:
稳定
流畅
安全
高性能
这就是为什么你打开一个网页,能看到这么多进程:
Chrome 其实不是浏览器,是一个小型操作系统。