浏览器多进程
线程和进程的关系
计算机中的并行处理就是同一时刻处理多个任务 同一时刻处理多个任务就是多个线程同时处理 但是线程是不能单独存在的,它是由进程来启动和管理的。 一个进程就是一个程序的运行实例。 详细解释就是,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线出现,我们把这样的一个运行环境叫进程。
线程依赖于进程 ,简单来说就是线程存在于进程里面,一个进程可以有多个线程。 进程和线程之间的关系有以下 4 个特点
- 进程中的任务以线程执行出错,都会导致整个进程的崩溃
- 线程之间共享进程中的数据
- 当一个进程关闭之后,操作系统会回收进程所占用的内存。
- 进程之间的内容相互隔离.
单进程浏览器
- 不稳定
- 不流畅
- 不安全
多进程浏览器
最新的 Chrome 浏览器包括: 1 个浏览器进程,1 个 GPU 进程,1 个网络进程,多个渲染进程和多个插件进程。
- 浏览器进程:主要负责界面显示,用户交互,子进程管理,同时提供存储等功能
- GPU 进程:主要是实现 UI 界面绘制
- 网络进程:主要是负责页面的网络资源加载,之前是作为一个模块运行在浏览器进程里面的,最后独立出来,成为一个单独进程。
- 渲染进程: 核心人物是将 HTML,CSS 和 Javascript 转为用户可以与之交互的网页,排版引擎和 js 引擎 V8 都是运行在该进程中,默认情况下 CHrome 会为每个 Tab 标签创建于给渲染进程,出于安全考虑,渲染进程都是运行在沙箱模式下。
- 插件进程:主要是用来负责运行插件,插件容易崩溃,还有安全问题
坏处:
- 更高的资源占用
- 更复杂的体系架构