Google Chrome 未充分利用 Windows 10 上的所有 RAM

Google Chrome 未充分利用 Windows 10 上的所有 RAM

我遇到的问题是,Google Chrome 会将自己32 GB的 RAM 限制在约 ,分布在许多标签页和进程中。

当它接近32 GBRAM 使用率时,它将开始非常缓慢地加载页面,或者在某些选项卡上显示内存不足错误。

我发现的所有关于 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而不是HomeWindows 10 许可证,如果这有区别的话。

我的问题是:

  1. 我是否忽略了一些固有的或可配置的 Chrome 内存自我限制?
  2. 我是否遇到了 Windows 10 中的某些限制,它不会将超过一半的内存提供32 GB给单个进程组或类似的东西?

我很乐意做任何额外的测试和/或提供更多信息!

更新:我尝试在 Windows 中禁用自动管理的页面大小,并设置静态大小(最小+最大大小现在都与物理 RAM 大小相同),根据这篇博文,通过这个找到评论并重新启动。我还尝试过不带扩展程序启动 Chrome。但都没有帮助。在笔记本电脑上使用 /和台式机上使用32 GB/时,我仍然收到相同的 OOM 错误“内存不足,无法打开此页面,请尝试关闭其他选项卡或程序以释放内存” 。64 GB40 GB128 GB

让我有点怀疑的是,错误发生的内存大小不是台式机内存的一半,而是比8 GB笔记本电脑内存的一半高。这几乎是台式机 Nvidia GPU 板载 GDDR 的大小。也许我应该尝试在没有 GPU 加速的情况下启动 Chrome,看看它是否想使用更多内存?

更新 2022-09-13:

如果我禁用设置中的“在可用时使用硬件加速”,问题就解决了。我已经在至少一个月内用 900 个标签测试过它,没有遇到内存不足错误的问题。当然,完全禁用硬件加速并不是一个令人满意的解决方案。

更新 2023-06-09:

我现在已禁用了 #enable-gpu-rasterizationchrome://flags/作为解决方法。这不会禁用硬件加速视频解码,不像完全禁用“硬件加速”。这仍然感觉像是一种黑客行为,但它使问题不那么频繁,所以我可以忍受它。不过,我仍在寻找合适的解决方案。

答案1

因此,在我找到令人信服的相反证据之前,我强烈怀疑 Chrome 浏览器崩溃的原因(尽管仍有足够的可用内存)是由于 Windows 的硬编码限制GPU memory

GPU MemoryDedicated GPU memory+ Shared GPU memory

任务管理器-性能选项卡-gpu

您可以在任务管理器中的“性能 - GPU”选项卡中查看GPU MemoryDedicated 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集成显卡的配置。

因此,如果您在打开数百个选项卡时遇到此问题,您可以:

  1. 购买更多 RAM。额外系统 RAM 的一半将提高 的上限shared GPU memory,从而提高总 的上限GPU memory
  2. 禁用#enable-gpu-rasterizationchrome://flags/减轻GPU memory要求。
  3. 关闭其他程序。
  4. dwm.exe在我的计算机上使用了大量的共享 GPU 内存(>10GB)。尝试以下操作:https://superuser.com/a/496506/182880请注意,系统范围的可用性意味着与进程所需的shared GPU memory类似名称完全不同,如在任务管理器的进程“详细信息”选项卡中启用该列时所示。shared GPU memory
  5. Chrome 浏览器“内存保护程序”功能2023 年发布的版本Chrome 110还允许您打开 1000 个标签页,但这些标签页不加载,因为这样当您拥有数十 GB 的系统 RAM 时,您不太可能遇到“内存不足”崩溃或速度变慢的情况。根据我的经验,这种方法比以前的丢弃标签页方法或第三方“The Great Discarder”浏览器扩展更可靠,并且更积极地恢复内存。

答案2

我一直在我自己的超强大计算机上进行类似的调查。

我发现任务管理器对于物理内存使用情况确实不准确,并且只显示活动内存使用情况。

Windows 中有一个内置工具,名为“资源监视器”,您可以使用它来查看“待机内存”。当您遇到内存问题时,几乎肯定会有大量“待机内存”。

但这并不是操作系统窃取了应用程序可以使用的内存。这是操作系统指定当前未被访问且也存在于硬盘上的资源。操作系统允许根据优先级矩阵在必要时覆盖该 RAM。可能发生的情况是您的内存已满,不需要的内存被清除,但稍后又需要。

微软还发布了另一个名为 RAMMap 的工具。这可以帮助您进一步了解内存问题,并缩小需要改进的范围。

相关内容