Chrome 为什么使用多进程,即每个站点用一个进程

2018-11-09  本文已影响13人  万事皆成

1. 为什么在浏览器中使用多进程

页面的html、javascript、css 越来越复杂,经常引起渲染引擎崩溃,如果是单进程,这个浏览器崩溃
健壮性 避免单个页面崩溃的影响
响应性 单个页面相应慢不影响其它页面
安全性 每个页面的渲染引擎在沙盒中,限制漏洞的攻击
把 Chrome 当做操作系统,每个网页当做一个 APP,会增加内存使用

2. 每个进程中都运行什么

Chrome 创建三种类型的进程:浏览器,渲染器和插件程序
浏览器:只有一个浏览器进程,管理标签,窗口和 “Chrome”,也处理磁盘,网络,显示的交互,但不会去解析和渲染任何网页内容
渲染器:渲染器进程由浏览器进程创建,每个渲染器进程响应一个网页。包括HTML,JavaScript,CSS,images等复杂的逻辑。使用 WebKit渲染引擎。每个渲染进程都在沙盒中,通过浏览器进程访问磁盘,网络,显示器。如果渲染器有异常,浏览器进程监视器可以杀掉
插件程序:每种插件由浏览器进程创建一个进程,例如 Flash,Quicktime,Adobe Reader.包含插件程序本身和一些胶水代码来与浏览器和渲染器进行交互

3. 浏览器什么时候创建进程

一旦创建了浏览器进程,一般会为每一个网页创建一个渲染器进程,但是如果不同进程间有相互关系可以两个标签共用一个进程。例如,一个标签使用 JavaScript 打开另一个标签,或者在另一个标签打开同一个网址。相关,如果在一个标签中输入不同网址,会重新替换新的渲染器进程。
兼容性很重要。因此,定义注册网站的域名,该域名下的子域名可以通过 JavaScript 交流,这些网址都在一个渲染器进程
警告
开很多进程电脑会变慢,所以渲染器进程限制在20个,如果超个限制,新的标签会重复使用已存在的渲染器进程。因此,可能一个渲染器进程被多个网址使用。
没有在进程中放置跨站点的帧,也没有为所有类型的跨站点导航交换标签的渲染器进程。目前,只是通过浏览器的“Chrome”为导航交换标签的进程。
每个插件程序,Chrome会在第一个网页使用时创建插件进程,在所有使用该插件的网页都关闭后销毁插件进程。

参考:
Multi-process Architecture
为什么Chrome比其他浏览器快?

上一篇下一篇

猜你喜欢

热点阅读