【问题标题】:What is the "leak" of object properties in Javascript (chrome dev tool)?Javascript(chrome开发工具)中对象属性的“泄漏”是什么?
【发布时间】:2013-04-13 05:02:30
【问题描述】:

我正在使用 chrome 开发工具和 Google's 3 snapshot techniques 调试我的 javascript 代码中的内存泄漏,我无法推荐。

然而,现在,通过在快照 3 的视图中查看在快照 1 和 2 之间分配的对象(如果您阅读幻灯片,这些是泄漏的对象),我看到了一大堆“对象属性”。

什么意思?

这是否意味着我在快照 1 中不存在且我没有删除的那些对象中添加了一些属性(在快照 2 和 3 之间)?

【问题讨论】:

  • @number 是对内存中对象的引用,而不是它有多少属性或占用了多少内存。阻止 GC 的主要因素是引用保持活动状态(例如,分配为您尚未完成的另一件事的属性)或其他奇怪的循环引用。

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


【解决方案1】:

代码做了一些强制 V8 为 OctreeCell 创建对象属性项的操作。

在拍摄第一个快照之前进行一次热身迭代是有意义的,或者只为第四个快照进行下一次迭代并查看快照 2 和 3 之间的对象。

【讨论】:

  • 确实,当我运行热身迭代时,我的那些东西似乎少了很多。但我仍然不明白 v8 引擎如何无法为那些 OctreeCell 分配“属性”对象,因为它们已被分配并且构造函数被调用...
  • 这篇developers.google.com/v8/design 文章可能会为您提供线索。实际上,v8 家伙使用了所有可以提高速度的技巧。
猜你喜欢
  • 2017-01-08
  • 2012-08-09
  • 2011-12-25
  • 2016-04-15
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 2017-06-18
相关资源
最近更新 更多