Chrome浏览器的进程模式

一、回顾

在之前的文章《 Chrome浏览器初始启动时的六个进程 》中渲染进程(Renderer Process)的作用是负责一个Tab内的显示相关的工作。简单的理解一个Tab,就会有一个Renderer Process,这些进程之间的内存无法进行共享,而不同进程的内存常常需要包含相同的内容。而实际我们也得到两种结果:

1.一个Tab下是可以不止一个渲染进程
2.多个Tab可包含在同一个渲染进程

并非每个Tab页都一定会有自己的一个进程,而这取决于浏览器设置的进程模型是什么。

二、四种进程模式(Process Models)

Chrome为了节省内存,提供了四种进程模式(Process Models),不同的进程模式会对 tab 进程做不同的处理。

进程模式模式说明
Process-per-site-instance (default)同一个 site-instance 使用一个进程
Process-per-site同一个 site 使用一个进程
Process-per-tab每个 tab 使用一个进程
Single process所有 tab 共用一个进程

这里需要给出 site 和 site-instance 的定义:

site 和 site-instance 的定义

site: 指的是相同的 registered domain name(如: http://google.com ,http://bbc.co.uk)和scheme (如:https://)。比如http://a.baidu.com和http://b.baidu.com就可以理解为同一个 site(注意这里要和 Same-origin policy 区分开来,同源策略还涉及到子域名和端口)。

site-instance: 指的是一组 connected pages from the same site,这里 connected 的定义是 can obtain references to each other in script code 怎么理解这段话呢?满足下面两中情况并且打开的新页面和旧页面属于上面定义的同一个 site,就属于同一个 site-instance
用户通过<a target=“_blank”>这种方式点击打开的新页面
JS代码打开的新页面(比如 window.open)

下面比较四个进程模式:

Single process

顾名思义,单进程模式,所有tab都会使用同一个进程。接下来是Process-per-tab ,也是顾名思义,每打开一个tab,会新建一个进程。而对于Process-per-site,当你打开 http://a.baidu.com 页面,在打开 http://b.baidu.com 的页面,这两个页面的tab使用的是共一个进程,因为这两个页面的site相同,而如此一来,如果其中一个tab崩溃了,而另一个tab也会崩溃。

Process-per-site-instance

是最重要的,因为这个是 Chrome 默认使用的模式,也就是几乎所有的用户都在用的模式。当你打开一个 tab 访问 http://a.baidu.com ,然后再打开一个 tab 访问 http://b.baidu.com,这两个 tab 会使用两个进程。而如果你在 http://a.baidu.com 中,通过JS代码打开了 http://b.baidu.com 页面,这两个 tab 会使用同一个进程。

Chome浏览器使用Process-per-site-instance作为默认的进程模式呢,兼容了性能与易用性,是一个比较中庸通用的模式。相较于 Process-per-tab,能够少开很多进程,就意味着更少的内存占用。相较于 Process-per-site,能够更好的隔离相同域名下毫无关联的 tab,更加安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓风伴月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值