无论你是设计高性能的Web应用,还是从事Electron开发,或是从事Node.js扩展C++开发,了解Chrome的多进程架构以及网络流程、页面渲染过程、JavaScript执行流程等知识,是很有必要的。这一章,我在这里为大家浅析一下Chrome的多进程架构原理。
Chrome进程在任务管理器中的样子
下面这幅图就是打开Chrome浏览器初始页面时,在任务管理器中看到的chrome多进程的样子。
我们在Chrome中仅仅打开了一个默认的页面,怎么出现了这么多的进程呢?
单进程浏览器
我们知道,进程是程序的一个运行实例。详细解释就是,启动一个程序(比如Windows中的exe程序)的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。
在早年间(2007年之前),浏览器也是单进程运行的。浏览器的所有功能模块都是运行在同一个进程里,这些模块包含了网络、插件、JavaScript运行环境、渲染引擎和页面等。单进程浏览器的架构如下图所示:
如此多的功能模块运行在一个进程里,是导致单进程浏览器不稳定、