Chrome流程模型:每站点流程实例和每站点流程

时间:2018-06-06 04:00:32

标签: google-chrome browser process

Process-per-site-instanceProcess-per-site应该被理解?我在这里阅读了解释,我觉得这两个论点没有区别?希望上帝能给出一些更简单的解释。例子更好?

Process-per-site-instance: Chromium为用户访问的网站的每个实例创建渲染器进程。这可以确保来自不同站点的页面是独立呈现的,并且对同一站点的单独访问也是相互隔离的。因此,站点的一个实例中的故障(例如,渲染器崩溃)或繁重的资源使用将不会影响浏览器的其余部分。此模型基于内容的来源和可能相互编写脚本的选项卡之间的关系。因此,两个选项卡可能会显示在同一进程中呈现的页面,而导航到给定选项卡中的跨站点页面可能会切换选项卡的呈现过程。

Process-per-site:Chromium还支持将不同网站彼此隔离的流程模型,但将同一网站的所有实例分组到同一流程中。此模型基于内容的来源,而不是选项卡之间的关系。

link:

1 个答案:

答案 0 :(得分:0)

最明显的区别之一是,在Process-per-site模式下,它可以确保每个站点最多使用一个进程,而在Process-per-site-instance(默认模式)下,一个站点可以具有一个以上的过程。

这是一个简单的实验来显示差异:

每个站点实例处理

首先以正常/默认模式打开Chromium(我在Chromium版本778138上进行过测试,我认为结果在任何最新的Chrome版本上都相同)。

然后打开两个github.com标签。

打开任务管理器(在Chromium中的“更多工具”下)。

two github.com tabs in Process-per-site-instance mode

如您所见,这两个选项卡具有两个不同的进程ID 8689286894

每个站点的处理

退出Chromium并通过在终端中运行该文本以其他参数重新打开它以进入每个站点模式的进程(我使用的是MacOS,对于Windows您可以按照this进行操作):

open -a "Chromium" --args --process-per-site

然后打开两个github.com标签。

与上一步相同,打开任务管理器。

two github.com tabs in Process-per-site mode

如您所见,两个github选项卡具有相同的进程ID 86831

另一个有趣的发现是,第一个(Process-per-site-instance)的总内存占用量约为125 MB,而第二个(Process-per-site)的容量约为88 MB,这少30%!但不利的是,如Chromuim website所述:

(Process-per-site) Can result in large renderer processes. Sites like google.com host a wide variety of applications that may be open concurrently in the browser, all of which would be rendered in the same process. Thus, resource contention and failures in these applications could affect many tabs, making the browser seem less responsive. It is unfortunately hard to identify site boundaries at a finer granularity than the registered domain name without breaking backwards compatibility.

进一步阅读:

this article中,作者在Process-per-site-instance模式下做了一些有趣的体验,我认为它可以进一步增进您对Chrome流程模型的理解。