打开chrome,一次性打开了5个进程?!

图片描述

打开chrome,一次性打开了5个进程?!

先解释一下为什么会有这么多个进程,再说为什么需要创建这么多进程。

那是因为现代浏览器采用的都是多进程浏览器,每个进程处理一个任务。 以chrome浏览器为例,打开一个chrome浏览器最少会产生4个进程,分别是:

 1. 浏览器进程
 2. 网络进程
 3. GPU进程
 4. 页面进程(正常情况下一个页面一个进程,特殊情况下面详细讲)
 5. 插件进程(如果有插件的话,一个插件一个进程)

详细如下图:(如何查看下图这种详细的进程,chrome右上角三个点 --> 更多工具 --> 任务管理器)
图片描述

特殊情况下,两个页面会共用一个页面进程:

chrome 默认每个页面一个进程,特殊情况:如果你从当前页面进入另一个新的页面,而且新页面的域名和当前页面一样,那么新页面会共用当前页面的页面进程,如下图:(场景:我从文章的评论者的名字进入了他的个人主页)

图片描述

那么为什么chrome要创建这么多进程,以前的单进程架构不好吗?

先说说之前的单进程架构存在的问题

  1. 不流畅

    • 插件:插件和页面使用同一个进程,插件会堵塞页面的加载
    • js: 其他页面js的死循环或者页面资源加载慢会导致整个浏览器的其他页面加载都卡死或变慢。
  2. 不安全

    • 插件:插件的权限过大,可以读取和修改本地文件,甚至修改电脑配置文件(使用c/c++编写的插件,可以完全控制你的电脑)。
    • js: js可以通过浏览器的漏洞获取电脑权限,接浏览器之手修改本机配置。
  3. 不稳定

    • 插件:插件大部分是第三方编写的,水平参差不齐,崩溃也是家常便饭,插件的崩溃将直接导致浏览器无响应或崩溃。
    • js: 一个页面js的死循环或崩溃将导致其他页面也卡死或崩溃。

所以在多年的研究、开发后,多进程架构c位出道,基本解决了这些的问题:

  1. 流畅性

    • 插件和页面的js只能影响自己的进程,死循环或资源加载慢只能影响自己。(当然 现代浏览器特别吃cpu和内存资源,cpu内存吃满了还是会卡,多进程浏览器的缺点)
  2. 安全性

    • 安全沙箱:系统对进程使用沙箱机制,无法写数据,只能读有限的数据,通常是你当前域名下载的文件,将恶意插件和js的后门堵死了。
  3. 稳定性

    • 因为进程间是相互隔离的,所以当一个页面或一个插件崩溃时,仅仅只会影响到当前页面和那个插件本身,完美解决一颗老鼠屎的问题。

欢迎交流,有不完善的地方欢迎指出

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。