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

图片描述

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

先解释一下为何会有这么多个进程,再说为何须要建立这么多进程。

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

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

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

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

chrome 默认每一个页面一个进程,特殊状况:若是你从当前页面进入另外一个新的页面,并且新页面的域名和当前页面同样,那么新页面会共用当前页面的页面进程,以下图:(场景:我从文章的评论者的名字进入了他的我的主页)浏览器

图片描述

那么为何chrome要建立这么多进程,之前的单进程架构很差吗?

先说说以前的单进程架构存在的问题安全

  1. 不流畅网络

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

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

    • 插件:插件大部分是第三方编写的,水平良莠不齐,崩溃也是屡见不鲜,插件的崩溃将直接致使浏览器无响应或崩溃。
    • js: 一个页面js的死循环或崩溃将致使其余页面也卡死或崩溃。

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

  1. 流畅性插件

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

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

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

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

相关文章
相关标签/搜索