2007年时,浏览器都是单进程的。单进程浏览器不稳定(插件崩溃)、不流畅、不安全(插件、页面脚本)。
为了解决这几个问题,多进程浏览器出现了。进程之间通过进程间通信机制通信(IPC)。主要有以下几个进程:
1.浏览器进程,主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。
2.网络进程,负责和服务器打交道。
3.渲染进程,负责将html、css、js展示,在沙箱模式中进行。
4.插件进程,在沙箱模式中进行,将插件单独放在一个进程中,是为了保证插件的崩溃不影响其他进程。
5.GPU进程,实现3D CSS效果。
如果打开2个页面,那么会有几个进程呢?
一般情况下是5个进程,1个浏览器进程、1个网络进程、1个GPU进程、2个渲染进程。但是也有特殊情况:
- 如果页面里有iframe的话,iframe也会运行在单独的进程中。
- 如果页面里有插件,同样插件也需要开启一个单独的进程。
- 如果你装了扩展的话,扩展也会占用进程。
- 如果2个页面属于同一站点的话,并且从a页面中打开的b页面,那么他们会共用一个渲染进程。