最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 浏览器的多进程、多线程运行机制

    正文概述 掘金(QZhan)   2020-12-10   602

    多进程的浏览器

    进程概念

    进程是操作系统分配资源的基本单位,而浏览器是多进程的程序。浏览器通过多个tab页来加载多个页面,标准上一个tab页应对应浏览器的一个进程。浏览器之所以能加载出页面,是因为操作系统给浏览器的各个进程分配了资源(CPU、内存)。

    浏览器包含的进程

    浏览器在打开后具体包含以下主要进程(未开始打开tab页加载页面):

    1. Browser进程:浏览器的主进程,主要作用有
      • 控制浏览器的交互动作,例如:打开关闭页面、前进后退按钮、接受URL输入等
      • 网络资源的下载
      • 将renderer渲染进程的结果展示到用户界面
    2. 插件进程:每种浏览器插件对应一个进程。
    3. GPU进程:用于3D绘制等,最多只有一个。

    浏览器初始化完成后,每打开一个tab页,即多增加一个渲染进程

    多进程的优、劣势

    相对于单进程浏览器,多进程有优点也有缺点,但肯定是利大于弊 优点

    • 避免单个页面或者插件奔溃后导致整个浏览器崩溃
    • 多进程能利用多核优势

    缺点

    • 占用更多的内存资源

    多线程的渲染进程

    渲染进程控制着整个页面的加载、渲染、JS代码执行和事件循环等。因此分为多个线程来分别执行不同的任务。

    1. UI渲染线程
      • 负责结合页面的DOM节点树和CSSOM树来渲染render树。
      • 在界面reflow或者repaint的时候会执行
    2. JS引擎线程
      • 负责解析并执行JS代码,与UI渲染线程是互斥的,无法同时执行两者。
      • JS引擎会不断地遍历事件队列,从中提取出事件来执行。
    3. 事件触发线程
      • 负责维护事件队列,当一些事件被触发时,该线程会把事件添加至事件队列的末尾,等待JS引擎处理。
    4. 定时器线程
      • 负责计时任务,例如setTimeout的定时不可能由JS引擎来计时(JS引擎的阻塞会导致计时不准确),因此需要该线程来计时,计时完成后触发事件。
    5. 异步http请求线程
      • XMLHttpRequest连接是通过浏览器新开该线程来实现,该线程会监听连接的状态是否改变。在状态改变时触发相应的回调函数。

    Web Worker——JS引擎线程的帮手

    前面提到JS引擎线程的执行会阻塞UI渲染线程,当JS引擎需要进行大量计算时,就会造成UI渲染线程的阻塞,从而导致页面卡顿现象。针对这个问题,HTML5新提出了Web Worker

    具体机制是JS引擎向浏览器申请新开一个Web Worker的子线程,将大量计算放在Web Worker线程中计算。当计算完成时Web Worker通过postMessage将结果返回给JS引擎。


    起源地下载网 » 浏览器的多进程、多线程运行机制

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元