我遇到的问题是,Google Chrome 会将自己32 GB
的 RAM 限制在约 ,分布在许多标签页和进程中。
当它接近32 GB
RAM 使用率时,它将开始非常缓慢地加载页面,或者在某些选项卡上显示内存不足错误。
我发现的所有关于 Chrome RAM 消耗问题的搜索结果都是关于它占用了太多内存。但我的问题是没有使用足够。
我的测试使用了大约 500 个标签,没有一个进程使用大量内存,使用情况均匀分布在许多进程中。
我在一台具有64 GB
物理 RAM 和 4 个内核的笔记本电脑上测试了这一点。在一台具有128 GB
物理 RAM 和 12 个内核的台式电脑上也测试了这一点。根据 TaskManager/Process explorer,应该有大量的空闲内存未被 Chrome 利用。然而,它并没有使用更多内存,而是减慢了速度或抛出了内存不足的错误。
起初,我以为这可能是 GPU 加速预留了我没有看到的额外内存的问题。但我认为情况不再如此,因为我在台式电脑上进行了测试,据我所知,台式电脑没有任何 GPU 内存限制,也没有 iGPU。
测试设备:Chrome Version 100.0.4896.127 (Official Build) (64-bit)
Windows 版本:10.0.19044.1645 (21H2)
。但我至少在过去 2 年里一直遇到这个问题。这不是最近的回归。我使用的是许可证,Pro
而不是Home
Windows 10 许可证,如果这有区别的话。
我的问题是:
- 我是否忽略了一些固有的或可配置的 Chrome 内存自我限制?
- 我是否遇到了 Windows 10 中的某些限制,它不会将超过一半的内存提供
32 GB
给单个进程组或类似的东西?
我很乐意做任何额外的测试和/或提供更多信息!
更新:我尝试在 Windows 中禁用自动管理的页面大小,并设置静态大小(最小+最大大小现在都与物理 RAM 大小相同),根据这篇博文,通过这个找到评论并重新启动。我还尝试过不带扩展程序启动 Chrome。但都没有帮助。在笔记本电脑上使用 /和台式机上使用32 GB
/时,我仍然收到相同的 OOM 错误“内存不足,无法打开此页面,请尝试关闭其他选项卡或程序以释放内存” 。64 GB
40 GB
128 GB
让我有点怀疑的是,错误发生的内存大小不是台式机内存的一半,而是比8 GB
笔记本电脑内存的一半高。这几乎是台式机 Nvidia GPU 板载 GDDR 的大小。也许我应该尝试在没有 GPU 加速的情况下启动 Chrome,看看它是否想使用更多内存?
更新 2022-09-13:
如果我禁用设置中的“在可用时使用硬件加速”,问题就解决了。我已经在至少一个月内用 900 个标签测试过它,没有遇到内存不足错误的问题。当然,完全禁用硬件加速并不是一个令人满意的解决方案。
更新 2023-06-09:
我现在已禁用了
#enable-gpu-rasterization
它chrome://flags/
作为解决方法。这不会禁用硬件加速视频解码,不像完全禁用“硬件加速”。这仍然感觉像是一种黑客行为,但它使问题不那么频繁,所以我可以忍受它。不过,我仍在寻找合适的解决方案。
答案1
因此,在我找到令人信服的相反证据之前,我强烈怀疑 Chrome 浏览器崩溃的原因(尽管仍有足够的可用内存)是由于 Windows 的硬编码限制GPU memory
:
GPU Memory
是Dedicated GPU memory
+ Shared GPU memory
。
您可以在任务管理器中的“性能 - GPU”选项卡中查看GPU Memory
、Dedicated GPU Memory
和大小。Shared GPU memory
Dedicated GPU memory
取决于您的显卡,对于 2023 硬件,通常介于 1GB 到 32GB 之间。对于您的专用 GPU,它是卡上的 GPU 内存量。对于某些集成显卡,Dedicated GPU memory
必须将其与主系统内存分开,并且可以在 BIOS 中配置此分配。例如,请参阅这个视频了解如何dedicated GPU memory
在 ASRock BIOS 上更改 AMD 集成显卡的尺寸。或者此链接如何dedicated GPU memory
通过 BIOS 更改英特尔集成显卡或者注册表编辑。
Shared GPU memory
仅限于系统内存的一半。修复崩溃的最佳方法是使其在 Windows 中可配置,但不幸的是我没有找到任何方法来更改此分配。此来源声称这是 Windows 的硬编码限制。并且这篇更详细的帖子和这个微软官方文档似乎证实了这一点。大多数教程宣称解释如何改变shared GPU memory
实际上解释如何更改dedicated GPU memory
集成显卡的配置。
因此,如果您在打开数百个选项卡时遇到此问题,您可以:
- 购买更多 RAM。额外系统 RAM 的一半将提高 的上限
shared GPU memory
,从而提高总 的上限GPU memory
。 - 禁用
#enable-gpu-rasterization
以chrome://flags/
减轻GPU memory
要求。 - 关闭其他程序。
dwm.exe
在我的计算机上使用了大量的共享 GPU 内存(>10GB)。尝试以下操作:https://superuser.com/a/496506/182880请注意,系统范围的可用性意味着与进程所需的shared GPU memory
类似名称完全不同,如在任务管理器的进程“详细信息”选项卡中启用该列时所示。shared GPU memory
- Chrome 浏览器“内存保护程序”功能2023 年发布的版本
Chrome 110
还允许您打开 1000 个标签页,但这些标签页不加载,因为这样当您拥有数十 GB 的系统 RAM 时,您不太可能遇到“内存不足”崩溃或速度变慢的情况。根据我的经验,这种方法比以前的丢弃标签页方法或第三方“The Great Discarder”浏览器扩展更可靠,并且更积极地恢复内存。
答案2
我一直在我自己的超强大计算机上进行类似的调查。
我发现任务管理器对于物理内存使用情况确实不准确,并且只显示活动内存使用情况。
Windows 中有一个内置工具,名为“资源监视器”,您可以使用它来查看“待机内存”。当您遇到内存问题时,几乎肯定会有大量“待机内存”。
但这并不是操作系统窃取了应用程序可以使用的内存。这是操作系统指定当前未被访问且也存在于硬盘上的资源。操作系统允许根据优先级矩阵在必要时覆盖该 RAM。可能发生的情况是您的内存已满,不需要的内存被清除,但稍后又需要。
微软还发布了另一个名为 RAMMap 的工具。这可以帮助您进一步了解内存问题,并缩小需要改进的范围。