【问题标题】:When Google Chrome spawns a new process?谷歌浏览器何时产生一个新进程?
【发布时间】:2019-10-12 04:14:09
【问题描述】:

当我看到 Google Chrome 的任务管理器时,我可以看到几个(每个)选项卡在单个进程下运行,而一组选项卡在单个进程下运行。出于好奇,我想知道为什么它作为多进程而不是多线程运行。引起我注意的一件事是,当它作为单个进程运行并产生多个线程时,可能会有一些限制/缺点,例如,

1) 可以创建的线程数限制

2) 当单个选项卡变得无响应时,整个应用程序将变得毫无用处,由于某些行为不端的网站,我们必须退出 chrome 并重新启动它。

一些人提到 Chrome 对每个域使用单个进程,但这里似乎并非如此。

我还是不太清楚,

1) Chrome 何时决定生成一个新进程?

2) 在单独的进程下运行单个选项卡的其他优点是什么?

3) 当每个标签在不同进程下运行时,cookie 如何在标签之间共享?这是通过进程间通信发生的吗?如果是,会不会太贵?它会影响其他标签(即网页)的性能吗?

【问题讨论】:

    标签: multithreading performance google-chrome process ipc


    【解决方案1】:

    问了这个问题后,我来看这篇文章(Multi Process Architecture of Chromium),它回答了我的问题(1)。

    Chrome 何时决定生成一个新进程?

    一旦 Google Chrome 创建了它的浏览器进程,它通常会为您访问的每个网站实例创建一个渲染器进程。这种方法旨在使来自不同网站的页面相互隔离。

    您可以将其视为对浏览器中的每个选项卡使用不同的进程,但如果两个选项卡彼此相关并且显示相同的站点,则允许它们共享一个进程。例如,如果一个选项卡使用 JavaScript 打开另一个选项卡,或者如果您在新选项卡中打开指向同一站点的链接,则这些选项卡将共享一个渲染器进程。这使这些选项卡中的页面可以通过 JavaScript 进行通信并共享缓存对象。相反,如果您在选项卡的位置栏中键入不同站点的 URL,它们将为该选项卡交换一个新的渲染器进程。

    他们限制了他们创建的渲染器进程的数量(在大多数情况下为 20 个)。一旦达到此限制,他们将开始为新选项卡重新使用现有的渲染器进程。

    在不同进程下运行标签有什么好处?

    谷歌浏览器利用这些属性,将网络应用程序和插件置于与浏览器本身不同的进程中。这意味着一个 Web 应用程序中的渲染引擎崩溃不会影响浏览器或其他 Web 应用程序。这意味着操作系统可以并行运行 Web 应用程序以提高其响应能力,这意味着如果特定的 Web 应用程序或插件停止响应,浏览器本身不会锁定。这也意味着他们可以在限制性沙箱中运行渲染引擎进程,这有助于在漏洞发生时限制损害。

    有趣的是,使用多个进程意味着 Google Chrome 可以拥有自己的任务管理器(如下所示),您可以通过右键单击浏览器的标题栏来访问它。此任务管理器可让您跟踪每个 Web 应用程序和插件的资源使用情况,而不是整个浏览器。它还可以让您终止所有停止响应的 Web 应用程序或插件,而无需重新启动整个浏览器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-07
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多