ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

为什么打开一个页面,浏览器会有4个进程或更多?

2021-09-26 10:05:09  阅读:157  来源: 互联网

标签:插件 浏览器 渲染 模块 进程 页面


首先说一下单进程浏览器

2007年之前,市面上的浏览器都是单进程的,即所有页面中所有的模块都运行在一个进程里,这些模块包括:网络、插件、javascript运行环境、渲染引擎、页面展现等。

这么多模块都运行在一个进程中,是浏览器不稳定不流畅不安全的主要因素。

1.不稳定

早起浏览器需要借助插件来实现web视频、web游戏等强大功能。但是插件是及其不稳定的因素,当插件崩溃时,会导致整个浏览器的崩溃,因为插件作为一个模块与其他模块都共同运行在浏览器进程中。

除去插件模块外,渲染引擎模块也是不稳定的,一些复杂的javascript代码会是渲染引擎模块崩溃,导致浏览器崩溃

2.不流畅

所有页面的渲染模块、javascript执行环境以及插件都运行在同一线程中,这就意味着同一时刻只能有一个模块可以执行。

如果有一个无限循环的脚本运行在一个单进程的浏览器的页面里是,它会占据整个线程,这会导致运行在该线程中的其它模块,都没有机会被执行。因为浏览器中所有的页面都运行在此线程中,所以这些页面没有机会被执行,这样就会导致整个浏览器失去响应,变卡顿。

页面的内存泄漏也会直接导致单进程变慢。运行复杂页面时,部分内存不能完全被回收,这样导致使用时间越长,内存占用越高,浏览器就会变的越慢。

3.不安全

插件可以使用C/C++等代码编写,通过插件可以获取到操作系统的任何资源,当运行一个插件时,这个插件能完全操作你的电脑,如果是恶意插件的话,它可以在你的电脑上释放病毒或盗窃你的账号密码等。

页面脚本可以通过浏览器漏洞获得你的系统权限,恶意的脚本可以通过获取到的权限,对你的电脑做一些恶意的事情。

多进程浏览器时代

 

 

(chrome进程架构图)

从图中可以看出,现在的chrome浏览器包括:一个浏览器主进程、多个渲染进程、多个插件进程、网络进程、1个GPU进程

1.浏览器进程:主要负责界面显示、用户交互、子进程管理、提供存储功能等功能

2.渲染进程:将HTML、CSS、Javascript转换为用户可以交互的界面,默认情况下,chrome会为每个Tab标签提供一个渲染进程,渲染进程是运行在沙箱模式下

3.GPU进程:chrome的UI界面都选择使用GPU来绘制

4.网络进程:负责页面的网络资源加载

5.插件进程:负责插件的运行,因为插件的易崩溃,所以需要通过插件进程来隔离,已保证插件崩溃时,不会影响浏览器以及其他页面资源

(如果是同一站点,从A页面点到B页面,此时,两个页面同用一个渲染进程,如果两个页面的站点不同,会是两个渲染进程,如果页面中有iframe,iframe也会自己占用一个进程)

标签:插件,浏览器,渲染,模块,进程,页面
来源: https://www.cnblogs.com/sysg/p/15336709.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有