浏览器包含了哪些进程
- 主进程
- 第三方插件进程
- GPU进程(3D绘制)
- 渲染进程(浏览器内核)
前端常接触到的就是渲染进程,也就是浏览器内核。负责页面的渲染,脚本执行,事件处理等…
渲染进程里面又包含多个线程
- GUI渲染线程
- 负责页面的布局,绘制以及渲染。
- 在页面发生回流(重排)以及重绘时就会执行该线程。
- 与JS引擎线程互斥,避免影响绘制效果。
- js引擎线程
- 负责解析并执行相关的js脚本
- 只存在一个js引擎线程(单线程)
- 与GUI渲染线程互斥,避免影响绘制结果
- 一开始整段脚本作为第一个宏任务执行
- 执行过程中,同步代码直接执行,宏任务进入宏任务队列。微任务进入微任务队列
- 当前宏任务执行完出队,检查微任务队列,如果有,依次执行,知道微任务为空
- 执行浏览器的GUI线程,进行页面渲染
- 检查是否有Web worker任务,有则执行
- 执行队首的宏任务,回到2.知道宏任务和微任务队列为空