【问题标题】:JS Heap recommended memory sizeJS Heap 推荐的内存大小
【发布时间】:2016-07-25 11:21:33
【问题描述】:

chrome 内存配置文件中的堆大小是否有任何限制?

【问题讨论】:

  • 您的意思是建议的限制或实际的 Chrome 限制(例如 Chrome 会崩溃的地方)?
  • chrome 内存配置文件的堆大小实际上并没有限制,因为 JS 本身无法访问可用内存等系统信息。由开发人员决定您的 Web 应用程序可以使用的可接受的内存量是多少。
  • 我对 Web 应用程序的“推荐限制”更感兴趣。使用 chrome 开发人员工具,我可以看到它是 35-66mb,我同意由我来处理/修复/识别,但想知道跨浏览器是否有标准的“推荐限制”。

标签: javascript google-chrome-devtools heap-memory


【解决方案1】:

注意:这是一个仅限 Chrome 的答案,请参阅下面的原因。


你应该看看 Chrome Dev Tools 中的window.performance.memory,有一个jsHeapSizeLimit 属性。 但是,我不确定这将是任何内存分析 y 轴上的最大值

您可以在 MDN 上找到更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/performance

性能.内存

Chrome 中添加的非标准扩展。

在 MDN 中链接(不再):https://webplatform.github.io/docs/apis/timing/properties/memory/

性能.内存:

注意:该属性是只读的。

console.log(performance.memory)

// Would show, for example
//{
// jsHeapSizeLimit: 767557632,
// totalJSHeapSize: 58054528,
// usedJSHeapSize: 42930044
//}

注意事项

usedJsHeapSize 是 JS 对象(包括 V8 内部对象)使用的内存总量,totalJsHeapSize 是 JS 堆的当前大小,包括未被任何 JS 对象占用的空闲空间。这意味着 usedJsHeapSize 不能大于 totalJsHeapSize。请注意,未必存在过 totalJsHeapSize 的存活 JS 对象。

请参阅WebKit Patch,了解如何公开量化值。这些测试尤其有助于解释它是如何工作的。


请注意,值表示没有单位,因为没有。这是因为 webkit 不想暴露可用内存大小等系统信息。它仅提供一种比较内存使用情况的方法(用于网站的两个不同版本之间的实例)。

【讨论】:

  • 我一直在使用 chrome performance.memory 并观察 usedJSHeapSize 与 jsHeapSizeLimit,totalJSHeapSize 与 jsHeapSizeLimit,我认为不是 jsHeap 已满导致我们的应用程序变慢,而是我们的调用堆栈很大并且不必要地在同一个调用堆栈中调用相同的函数,认为这可能会导致更多问题。谢谢你的回答。
  • 很高兴能帮上忙!我还没有经常使用它,几周前我刚刚在某个地方读到了这个。如果您发现任何有用的资源,请告诉我,我会将其添加到我的答案中
  • 在 Chrome 68+ 中,您将获得来自与网页 (eTLD+1) 相同来源的脚本的非分桶值。限制放宽为每 50 毫秒一个样本。这意味着您可能不再需要--enable-precise-memory-infochromium.googlesource.com/chromium/src/+/…
  • 那么推荐的堆大小是多少?
  • 没有建议,优化应用就是在内存使用和cpu使用之间找到正确的权衡。
【解决方案2】:

理论上,内存限制(不是 LocalStorage,而是实际内存)是无限的,并且仅受系统 RAM 量的限制。实际上,大多数网络浏览器都会对每个窗口设置一个限制(例如,200MB)。有时,用户可以自定义限制。此外,操作系统可以限制应用程序使用的内存量。

【讨论】:

  • 不清楚为什么有 3 个值而不是只有两个。对此事有任何想法吗?甚至 MDN 也没有涉及这个主题,而旧的 webplatform.github.io/docs/apis/timing/properties/memory 只是解释了 Used 和 Total。所以为什么会有极限一? Total 和 Limit 有什么区别?如果 Used 是 Total 的某个百分比,Limit 代表什么?
猜你喜欢
  • 2017-06-07
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 2012-06-12
  • 2013-06-27
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
相关资源
最近更新 更多