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浏览器 Google Chrome用的是IE内核吗?