Notes

浏览器多进程架构

一句话结论:浏览器用“多进程 + 多线程”把渲染、网络、GPU 等隔离开;事件循环主要发生在渲染进程的主线程上。

1. 常见进程(以 Chromium 为例)

  • Browser 进程:UI、导航、权限、进程管理的“总控”
  • Renderer 进程:页面渲染与 JS 执行(通常一个标签页/站点实例对应一个或多个渲染进程)
  • Network 进程:网络请求、缓存、Cookie/连接复用等
  • GPU 进程:合成与部分绘制相关工作,减轻主线程压力
  • 其它:扩展/插件/工具进程等(隔离降低崩溃与安全影响面)

2. 渲染进程里的关键线程

  • Main thread:执行 JS、样式计算、布局、触发绘制等;事件循环所在
  • Compositor thread:合成层、滚动与合成动画(尽量不阻塞主线程)
  • Worker threads:Web Worker 等,把计算挪出主线程(但 DOM 仍只能在主线程改)

3. 为什么这会影响“事件循环”

  • JS 单线程:主线程一旦被长任务占满,输入/定时器回调/渲染都会延后
  • “并发/时间切片”的底层动机:把主线程时间让出来,保证交互与刷新

关联阅读

cd ..