Google Chrome 浏览器有内存限制吗?

Posted

技术标签:

【中文标题】Google Chrome 浏览器有内存限制吗?【英文标题】:Is there any memory limit for Google Chrome browser? 【发布时间】:2015-06-19 15:10:17 【问题描述】:

chrome 中单个选项卡的默认内存限制是多少??

【问题讨论】:

【参考方案1】:

很难正确回答,只能在针对特定构建的特定任务的基准测试中找出答案。

有几件事可以让您使用 1 到 2 GB 的内存:

Chrome 版本:因为不同的 V8 引擎有不同的内存限制。 Chrome 平台:32 位或 64 位。 操作系统本身:chrome 可以针对不同的平台使用不同的标志构建。 再说一次,Chrome 版本:互联网上有一些关于使用一些编译标志重新编译 chrome 的讨论,这些编译标志可能会允许使用更多内存,然后 chrome 开发人员出于某些原因决定排除这些标志。谁知道——也许他们会再次包含它们,或者会增加默认堆大小。 视频内存:在某些情况下,页面的内容可能需要一些视频内存,如果您的视频适配器没有足够的内存,Chrome 会从一般内存中获取它,这会增加页面的内存使用量。

现在,使用 64 位 Chrome 版本 47,在 Windows 8.1 上,一个选项卡最多可以占用 1.8GB,然后崩溃。

更新:

正如我所见,发生了一些神奇的事情,并且限制发生了变化。 对于 Chrome 版本 63,在 x64 Windows 10 操作系统上,我最多可以分配 3.5 GB 内存,解析一个巨大的 JSON 字符串,然后将其显示在页面上。 该数字取自 Chrome 的任务管理器和 Process Explorer 的 Private Bytes 指标。

【讨论】:

@btelles 我为不同的点使用了不同的来源。你问的是哪一个? 能否提供每个 TAB 限制的来源? @user643011 是的,它是在我自己的机器上测试的。【参考方案2】:

有人在谈论一个非常相似的话题。 Here

您应该尝试以下方法:

右键单击 Chrome 图标并转到属性。 Chrome 应该在这里:

"C:\Documents and Settings\%USER%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" 

显然,%USER% 是您在 PC 上的用户名 ;)

在行尾添加--purge-memory-button

应该是这样的:

"C:\Documents and Settings\%USER%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" --purge-memory-button 

现在,当 Chrome 工作时,按 shift+Esc,现在您有一个新选项“清除内存”,它可以释放内存。在特定时间不需要注意的选项卡将从您的 RAM 中清除。

您还可以添加以下行之一:

永远不要主动放弃记忆

--memory-model=high  

切换标签页时主动减少工作集

--memory-model=medium 

在切换选项卡时自愿减少工作集

--memory-model=low 

浏览器没有被积极使用

你可以在目标位置"C:\Documents and Settings\%USER%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe"之后有几行

假设我们要使用“清除内存”行和“低内存模型”行。它看起来像这样:

"C:\Documents and Settings\%USER%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" --purge-memory-button --memory-model=low 

【讨论】:

这没有回答问题。 但它或多或少地回答了我的问题。 --memory-model 参数是否仍然可用?我找不到关于它的任何官方文档 - 只是一个铬开发者对其实施不满意的论坛帖子。【参考方案3】:

在特定平台上使用特定版本进行基准测试后,您可以获得完美的答案。结果将仅适用于您试验的那个平台和 chrome 版本,因为有很多因素可能会对结果产生不同的影响,包括,

    Chrome 版本可能具有不同的 v8 引擎,并且并非所有 v8 引擎都具有相同的内存限制。此外,当我们对 chrome 进行基准测试时,32 位和 64 位架构就会出现。默认堆大小可能因 v8 版本而异。

    运行 chrome 的系统配置。 chrome 需要图形内存/视频内存,当你没有它时,它会使用内部内存,从而导致更多的内存使用。

    这也与进程本身有关,每个线程都需要一些内存用于bookkeeping,尤其是它的堆栈。 32 位进程只能寻址 4 GB 内存。 64 位进程没有地址空间问题,而是实际分配问题。但是,程序不应接近任何此类限制或需要担心它,这同样适用于 chrome。

我曾尝试从 chrome 的 phpMyAdmin 导出和打印数据库。它在 DB 中有 1.22GB 大小,并且 chrome 崩溃了。我对文件导出执行了同样的操作,并且神奇地工作正常。

关于 v8 引擎,它在 32 位系统上有 512MB 的内存限制,在 64 位系统上有 1434MB(1.4 GB)的内存限制。 chrome的核心是v8,这是影响内存限制的主要因素。

【讨论】:

您是否有关于 Chrome 如何使用系统配置来决定内存限制的具体信息? 我认为没有这样的东西。根据系统的配置,它因系统而异。但是没有发现任何证明 ho chrome 决定内存限制的东西。查看更新的答案 限制不会是任意的......它将基于一些信息。了解具体细节会有所帮助,并且会回答这个问题。【参考方案4】:

通过传递以下命令行选项,我能够增加基于 nw.js (chrome) 的 destkop 应用程序的内存限制:

Node.js: node --max_old_space_size=12288 script.js
Google Chrome: chrome.exe --js-flags="--max_old_space_size=12288"
NW.js: add "js-flags": "--max_old_space_size=12288" to the package.json.

调整 12288 (12GB) 以满足您的需求

【讨论】:

是的,Google Chrome 浏览器有内存限制,请查看js9.si.edu/js9/help/memory.html 默认情况下是的,但有了这个标志,我可以使用 128GB 的​​内存来删除我的 SD。【参考方案5】:

如果您运行的是 32 位 Chrome,则分配的空间不能超过 2 GB,因为这是 32 位 Windows 进程的进程限制。对于 64 位 chrome,有 4gb 的限制。 Chrome 不允许分配超过 4Gb

【讨论】:

以上是关于Google Chrome 浏览器有内存限制吗?的主要内容,如果未能解决你的问题,请参考以下文章

Google chrome 出现WEbGL遇到问题

Google浏览器 Google Chrome用的是IE内核吗?

Google对Chrome要有大动作了

Android 浏览器加载本地 HTML

LoadRunner11支持的浏览器都有哪些(除了IE)? 支持Google的Chrome浏览器吗?

XBAP 应用程序,这些可以在 Google Chrome 中运行吗?