查看原文
其他

浏览器的线程和进程

Dunizb 前端全栈开发者 2020-09-14

点击上方“做工程师不做码农”,并“置顶公众号”

第一时间接收我的最新文章


01

线程 VS 进程


多线程可以并行处理任务,但是线程是不能单独存在的,它是由进程来启动和管理的。


一个进程就是一个程序的运行实例。详细解释就是,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。



线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。


总结来说,进程和线程之间的关系有以下 4 个特点。

  1. 进程中的任意一线程执行出错,都会导致整个进程的崩溃。

  2. 线程之间共享进程中的数据。

  3. 当一个进程关闭之后,操作系统会回收进程所占用的内存。

  4. 进程之间的内容相互隔离。



02

仅仅打开了 1 个页面,为什么有 4 个进程?


因为打开 1 个页面至少需要 1 个网络进程、1 个浏览器进程、1 个 GPU 进程以及 1 个渲染进程,共 4 个;如果打开的页面有运行插件的话,还需要再加上 1 个插件进程。


不过凡事都有两面性,虽然多进程模型提升了浏览器的稳定性、流畅性和安全性,但同样不可避免地带来了一些问题:
  1. 更高的资源占用。因为每个进程都会包含公共基础结构的副本(如 JavaScript 运行环境),这就意味着浏览器会消耗更多的内存资源。
  2. 更复杂的体系架构。浏览器各模块之间耦合性高、扩展性差等问题,会导致现在的架构已经很难适应新的需求了。




近期推荐


坚持原创、坚持干货。关注我的公众号,第一时间接收原创、干货文章。专注大前端技术。博客:https://www.dunizb.com



点个在看少个 bug 👇

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存