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

2019-09-10 admin

图片描述

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

那是因为现代浏览器采用的都是多进程浏览器,每个进程处理一个任务。 以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. 稳定性

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

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

[转载]原文链接:https://segmentfault.com/a/1190000020338930

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-74723.html

文章标题:打开chrome,一次性打开了5个进程?!

相关文章
15个提高编程技巧的JavaScript工具
JavaScript鑴氭湰搴撴槸涓€涓?棰勫厛鐢↗avaScript璇?瑷€鍐椤ソ镄勫簱锛屽畠鏂逛究浜嗘垜浠?寮€鍙戝熀浜嶫avaScript镄勫簲鐢ㄧ▼搴忥紝鐗瑰埆阃傚悎AJAX鍜屽叾浠栦竴浜涗互Web涓轰腑蹇幂殑鎶€链?銆侸avaScr...
2015-11-12
JavaScript打开摄像头并截图上传示例
直入正题,JS打开摄像头并截图上传至后端的一个完整步骤 1. 打开摄像头主要用到getUserMedia方法,然后将获取到的媒体流置入video标签 2. 截取图片主要用到canvas绘图,使用drawImage方法将video的内容绘至c...
2017-03-17
JS实现带缓冲效果打开、关闭、移动一个层的方法
本文实例讲述了JS带缓冲效果打开、关闭、移动一个层的方法。分享给大家供大家参考。具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1...
2017-03-23
如果我实现了自己的OS,我算开发者中的精英吗?
相信有很多Linux爱好者心中都怀有编出一个自己的操作系统的理想,一位外国网友在quora上提出了这个问题。本期#linuxstory 说#节目翻译节选了一个令人启迪的回答,让我们从另一个角度思考个人重新发明轮子的意义。以下是网友的答案: ...
2015-12-25
前端E2E测试框架 cypress了解一下
What is E2E? 所谓的E2E就是end-to-end。 假设我们编写的每个功能程序都是一个黑匣子,最终用户也只会看到这个黑匣子,那么站在用户的角度来看并不需要知道这个黑匣子内部是什么东西也不需要知道怎么实现的,我只管知道最终效果是...
2018-04-29
为什么糟糕的科学代码战胜了遵循“最佳实践”的代码
我刚刚读了“科学代码的低品质”,它声称科学家写的代码比有“软件工程师”参与的代码要更糟糕些。 我所处的工作环境有十多年了,那里由具有数学或物理学背景的人统治,他们经常缺少“软件工程师”的认识。 最大的麻烦总是由大多数把自己定位成程序员的人造...
2015-12-25
vue+element+echarts 响应式后台管理系统,了解一下?
寒假结束了,趁着寒假,自己玩了一下element和echarts去实现了一个简单的后台管理系统。 项目比较简单,十分适合入门,涉及到了轮播图,表格,表单,echarts柱形图和折线图,以及网页的响应式等。 先来看看效果: pc端 移动...
2018-02-25
使用mpvue开发小程序需要注意和了解的知识点
一、实例生命周期 除了Vue本身的生命周期处,mpvue还兼容了小程序的生命周期,这部分生命周期的钩子来源于微信小程序的Page,除特殊情况外,不建议使用小程序的生命周期钩子。 app 部分: onLaunch,初始化 onShow,当小...
2018-05-23
JavaScript实现动画打开半透明提示层的方法
本文实例讲述了JavaScript实现动画打开半透明提示层的方法。分享给大家供大家参考。具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1...
2017-03-22
PostCSS真的太好用了!
在PostCSS官网有着这样的对PostCSS特性介绍,箭头后面是对应功能的插件及其github地址。 PostCSS是一款使用插件去转换CSS的工具,有许多非常好用的插件,例如autoprefixer,cssnext以及CSS Modu...
2018-05-09
回到顶部