Chrome 进程模型:每个站点实例的进程和每个站点的进程。

问题描述 投票:0回答:1

Process-per-site-instanceProcess-per-site 应该理解为?我看了这里的解释,感觉两个论点没有什么区别?希望大神能给出一些更简单的解释。例子比较好?

Process-per-site-instance:Chromium会为用户访问的每个网站实例创建一个渲染器进程。这样可以保证不同网站的页面独立渲染,对同一网站的单独访问也是相互隔离的。因此,一个网站的一个实例出现故障(如渲染器崩溃)或资源大量使用,不会影响浏览器的其他部分。这种模式是基于内容的起源和可能互相脚本的标签页之间的关系。因此,两个标签页可能会显示在同一进程中渲染的页面,而在给定的标签页中导航到一个跨站点的页面可能会切换标签页的渲染进程。

Process-per-site:Chromium还支持一种进程模型,它将不同的站点相互隔离,但将同一站点的所有实例归入同一进程。这种模型是基于内容的来源而不是标签页之间的关系。

链接。

google-chrome browser process
1个回答
0
投票

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

下面是一个简单的实验来说明两者的区别。

进程-每个站点实例

首先在正常默认模式下打开Chromium(我是在Chromium build 778138上打开的,我想结果在任何最近的Chrome build上都是一样的)。

然后打开两个 github.com 选项卡。

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

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

正如你所看到的,这两个标签页有两个不同的进程 ID 8689286894

每个地点的流程

退出Chromium,然后用添加参数重新打开Chromium,在Terminal中运行这个,进入每站点的进程模式(我使用的是MacOS,对于Windows,你可以按照以下步骤操作 这个):

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网站:

(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.

进一步阅读:

本文 笔者在下做了一些有趣的经历。Process-per-site-instance 模式,我想它可以进一步提高你对Chrome进程模型的理解。

© www.soinside.com 2019 - 2024. All rights reserved.