Chrome是内存杀手?如何优化谷歌浏览器的RAM占用

chrome eats ram - operation, equipment - Chrome是内存杀手?如何优化谷歌浏览器的RAM占用

如果你经常摆弄各种浏览器,你可能会知道一个事实:Chrome浏览器就像猪一样,巨能吃内存!在偶尔看一眼任务管理器或活动监控面板的时候,你经常会发现Chrome排在最前面。

那么,为什么Chrome相比其他浏览器会占用那么多内存(RAM)呢?有没有办法可以解决这个问题呢?

Chrome浏览器真的那么吃内存吗

如果把时间倒退几年,那么答案是肯定的。谷歌的Chrome浏览器在当时是赫赫有名的内存杀手。

但在2019年的今天,对比其他浏览器Chrome并非总是占用内存最多的那个。事实上最近Gavin Phillips做了一个调查,他使用Mozilla Firefox、Microsoft Edge、Opera、Safari和Chrome做了一个调查,尝试运行相同的Facebook、YouTube、BBC体育和Twitter网站,得到的结果是很有趣的。这些浏览器的内存占用如下:

popular browser ram use chart - operation, equipment - Chrome是内存杀手?如何优化谷歌浏览器的RAM占用

谷歌的Chrome处在第三的位置,表现还算不错,这足以说明Chrome浏览器并不是占用RAM最多的,至少不总是。然而事实上,如果你复现这类实验,可能会发现Chrome反而是表现最差的那一个……

那么Chrome的内存都用去哪里了呢?

为何Chrome那么吃内存

“抱歉,谷歌Chrome浏览器因为内存不足无法打开此网页”,在内存耗尽的时候,你会收到Chrome的这样的一条提示。而如果你想要知道为什么Chrome浏览器如此占内存,就需要了解现代浏览器是如何运作的。

你的计算机运行的每个程序都会创建一个或多个占用内存的进程,而内存则是程序运行的容许空间。准确来说,内存即RAM是临时存储一系列数据的空间,它的数据交换速度非常快,并且可以被CPU直接访问。因此RAM的速度是要大于机械硬盘甚至固态硬盘(SSD)的。

不管是Chrome,还是Firefox或Opera,都会将每个标签页、插件和扩展单独建立进程,它们会分别占用RAM。这种方式叫做进程隔离,可以避免不同进程相互覆写。

因此,当你打开任务管理器或活动监控面板时,你会发现浏览器的名字会出现很多次,每一次出现都代表一个进程正在运行。尽管每个进程所占的RAM并不多,但加起来可能就是个庞大的数字。

chrome in windows task manager - operation, equipment - Chrome是内存杀手?如何优化谷歌浏览器的RAM占用

Chrome是如何管理内存的

Chrome之类的现代浏览器追求稳定性和打开速度,因此对RAM的使用策略也是为这种浏览体验服务的。

由于分离运行多个线程,如果一个线程发生了崩溃,那么整个浏览器仍然可以是稳定的。因此你会发现,有时候某个插件或扩展挂掉了,但浏览器只是提醒你刷新标签页,而不需要重启整个浏览器。而相反如果所有的标签页和插件拓展都在一个线程里,当任何一个东西崩溃,你就需要重启整个浏览器了。

多进程还有安全方面的好处,原理类似于沙盒或虚拟主机。举例来说,如果某个标签页内发生了JavaScript攻击,在Chrome中其他标签页是不会被波及的;但同样的情况如果发生在单线程浏览器里,那一切东西都会暴露在攻击之下。

但多进程方式也有副作用,即很多相同的、本可以被多个线程共享的数据,现在要复制多份以让每个进程单独使用。

单线程浏览器和多线程浏览器的工作原理可以用下面的图快速理解:

single v multi process - operation, equipment - Chrome是内存杀手?如何优化谷歌浏览器的RAM占用

除了刚才说到的标签页、插件和扩展,另外一些进程也会占用RAM.

典型例子之一是预渲染功能。所谓的预渲染,指的是Chrome会预测你接下来会浏览的页面,并提前加载并渲染它们。预渲染的预测途径很多,比如你在地址栏进行关键词搜索后谷歌认为质量和相关度最高的那几个结果,再比如新闻网站上的“下一页”对应的内容。

自然地,预渲染也不是白给的,它要占用计算机资源,其中很大比例是对RAM的占用。虽然它理论上可以增加你的浏览体验,但当它未能猜中时,就只是白白占用资源并浪费整个操作系统的资源。类似的提升浏览体验的进程还有很多,它们几乎都有类似的双刃剑效果。

Chrome的内存占用影响严重吗?

说回来,Chrome到底需要多少RAM?使用超过多少RAM会产生问题?这就要看你的硬件水平了。

Chrome占用内存多不假,但这不意味着就会造成问题。如果你的系统有空闲的RAM,那对你也没有什么额外的好处,它只能说明你的系统利用率很低。RAM本来就是拿来让软件用于快速交换数据提升速度的,因此尽可能保持较低的RAM占用率是根本没有必要的。

话说回来,很多人喜欢在智能手机上装内存清理软件,而实际上清理掉内存往往反而会让常用软件运行的更慢……

但不得不说,Chrome占用内存太多导致问题终究是有可能的,毕竟Chrome占用内存越多,其他软件可用的内存就越少。当占用达到一定程度的时候,甚至Chrome自己的功能都会出现问题。当然,让电脑变慢甚至司机也不是没有可能的。

反过来,如果你的Chrome占了很多内存,但你并没有感觉任何东西出现卡顿,那就没什么可担心的。举例来说,作为互联网重度用户,笔者经常使用Chrome同时开着超过50个标签页,内存占用高达3.5G或更多。虽然看起来这很严重,但笔者的电脑内存为16G,因此根本不存在问题。

那,出问题的时候呢?

如何减少Chrome的内存占用

提升Chrome浏览器速度,减少内存占用的方式是有的。其中,最重要的工具就是Chrome自带的任务管理器。

Chrome任务管理器和Windows任务管理器类似,可以列出所有的标签页、插件和扩展的状态。通过Chrome任务管理器,你就可以找出占用内存最大的Chrome进程,并考虑要不要关掉它。

在Windows下,按下Shift+Esc快捷键就可以呼出任务管理器。而在Mac下,你必须从窗口菜单中打开它。

chrome activity - operation, equipment - Chrome是内存杀手?如何优化谷歌浏览器的RAM占用

上面的截图就是任务管理器的样子。有时候Chrome的某个标签页可能会因为Bug或设计问题占用大量内存,你就可以考虑关掉它。有时候Chrome内存会发生泄露,导致浏览器甚至整个系统出现卡死。

使用Chrome Flag管理内存

Chrome的Flag是一个少有人知道的功能组合,它们是一系列测试功能的合集。其中一个Flag的作用就是可以自动在系统内存不足的时候让未使用的标签页转为禁用状态。禁用状态下的标签页不会加载任何内容,直到你选中它让它成为当前标签页。

要启动它,你需要在地址栏输入:

chrome://flags

找到Automatic Tab Discarding(自动禁用标签页)选项,然后点击右边的Default(默认),在弹出的菜单中点击Enable(启用)即可。

另一个相关的Flag叫做Show Saved Copy Button(显示已保存的快照按钮),启用后在浏览器禁用某个标签页后,“已保存的快照”按钮就会出现,你可以选择是否直接载入浏览器上一次缓存的页面版本。

管理插件和扩展节约Chrome内存

你可以禁用一些占内存很高的插件或扩展,某些特定的插件只在特定的网页上有用,这种情况下你可以选择用的时候再开启。

举例来说,笔者浏览器中有一款语法检查插件和一款截图插件,但实际每天用到这两个插件的情况很少,毕竟不可能每个页面都需要检查语法或者截图。此时,你可以右键点击它,选择“管理扩展程序”,将“有权访问的网站”一项选择“点击时”或“在特定网站”上,这样它就不会在没有必要的时候访问当前标签页了。

如果你有大量的插件,无法在右上角的位置放下而需要成组地管理,可以下载一个叫做SimpleExtManager的管理插件,让你一键开关设定好的插件组合。

微信打赏支付宝打赏

感谢您的支持!

文章来源:卡米雷特的小站www.kamilet.cn)转载请注明出处。

卡米雷特

视觉控&技术控,不断学习中!

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。