浏览器多进程到js单线程以及js运行机制

一、进行和线程

1.进程之间相互独立,多个线程在进程中协作完成任务;一个进程由一个或多个线程组成,同一个进程下的各个线程之间共享程序的内存空间(代码段、数据集、堆等)

2.在windows电脑中,打开任务管理器看到一个后台进程列表,而且可以看到每个进程的内存资源信息以及cpu占有率

3.单线程与多线程,都是指在一个进程内的单和多。

4.浏览器是多进程的,每打开一个tab页,就相当于创建了一个独立的浏览器进程。浏览器进程包含browser进程(前进和后退)、第三方插件进程、GPU进程和浏览器渲染进程(页面的渲染、js的执行、事件循环)。

二、浏览器的渲染进程

1.浏览器的渲染进程是多线程的

(1)GUI渲染线程:负责渲染浏览器界面,解析HTML,CSS构建DOM树和RenderObject树,布局和绘制等;回流和重绘时会执行;

(2)JS引擎线程:负责处理js脚本程序,一个tab页(进程)中无论什么时候都只有一个js线程在运行js程序。GUI渲染线程和JS引擎线程是互斥的,当JS引擎执行时GUI线程会被挂起,如果js执行的时间过程,就会导致页面渲染加载阻塞。

(3)事件触发线程:归属于浏览器而不是JS引擎,用来控制事件循环;由于js是单线程关系,所以这些待处理队列种的事件都要排队等待JS引擎空闲时执行;

(4)定时器触发线程:

(5)异步http请求线程

三、css加载是否会阻塞dom树渲染

css是单独的下载线程异步下载的;css的加载不会阻塞DOM树解析,但会阻塞render树渲染

四、普通图层和复合图层

(1)GPU种,各个复合图层是单独绘制的,所以互不影响;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值