前端笔记-01-Chrome打开一个页面为什么需要启动4个进程?

184 阅读2分钟
要弄懂这个问题,首先需要理解一下什么是线程,什么是进程
  • 线程是不能单独存在的,它由进程来启动并管理
  • 进程就是一个程序的运行实例,当启动一个程序的时候,操作系统会为该程序分配一块内存,用来存放代码,数据和一个执行任务的主线程,这样的一个运行环境叫做进程

如图所示,线程是依附于进程的,并且进程中使用多线程可以提高运行效率。并且进程和线程具有以下几个特点:

  1. 进程中任意一个线程执行出错都会导致该进程崩溃。
  2. 线程之间共享进程中的数据。
  3. 当一个进程关闭之后,操作系统会回收该进程所占用的内存。
  4. 进程之间的内容互不干扰,每个进程只能访问自己占有的数据,如果进程之间需要进行数据通信,就需要使用进程间通信(IPC)机制
最新的Chrome进程架构图

最新的Chrome浏览器包括:1个浏览器进程、1个GPU进程、1个网络进程、多个渲染进程和多个插件进程

  1. 浏览器进程:主要负责页面显示、用户交互、子进程管理并提供存储等功能
  2. 渲染进程:负责将HTML、CSS和JavaScript转换为网页,排版引擎Blink和Javascript引擎V8都是运行在该进程中,默认情况下Chrome会为每个Tab标签创建一个渲染进程
  3. GPU进程:使用初衷是为了实现3D CSS效果,随后网页、Chrome的UI界面都采用GPU来绘制
  4. 网络进程:主要负责页面的网络资源加载。
  5. 插件进程:主要负责插件的运行。因为插件容易崩溃,因此需要单独一个进程来隔离
因此,打开一个页面至少需要1个浏览器进程、1个网络进程、1个渲染进程和1个GPU进程,如果页面有运行插件的话还需要1个插件进程