线程:由进程启动和管理,不能单独存在
进程:程序的运行环境
原来浏览器的每一个 页面/插件/扩展程序 都是一个进程
单进程浏览器时代:
- 不稳定
- 不流畅
页面内存泄漏:关闭页面->关闭线程:内存不完全回收
- 不安全
早期多进程浏览器时代
- 主进程:下载资源、管理IPC、吸纳事渲染进程生成的图片
- 进程相互隔离
- 关闭页面-> 关闭进程 -> 回收内存
- 安全沙箱:恶意程序无法突破沙箱去获取系统权限
目前多进程浏览器
打开一个页面至少打开4个进程:网络、浏览器、GPU、渲染
- 浏览器主进程:界面显示、用户交互、子进程管理、存储等
- GPU进程:实现3D css
- 网络进程: 网络资源加载
- 多个渲染进程(沙箱模式):排版引擎Blink、js引擎V8
- 多个插件进程:插件运行
问题:
- 更高的资源占用
- 更复杂的体系架构:耦合性高、扩展性差
未来面向服务架构
各模块重构成独立的服务