JavaScript中的内存泄漏(Chrome)

pim*_*vdb 8 javascript memory-leaks google-chrome

我正在调用一个50次的函数,这会做一些昂贵的东西,因为它在<canvas>元素上绘制很多.

它工作得很好,没有任何问题,但我只看了一下内存使用情况,它每秒内存占用1MB.Chrome似乎是垃圾收集,因为它每分钟都会消失,但随后用量再次增长.

我尝试的是return在我的函数中的某些位置放置,以便确定我的函数的哪个部分确切地导致泄漏.我已经能够将其缩减为特定的代码行,之后邪恶的部分来了,但我真的不知道如何解决它.

我的问题是:

  • 有哪些工具可用于有效衡量Chrome中的JavaScript内存泄漏?
  • 将变量设置为null/使用undefined后是否有效,比如处理它们?

如果源代码确实是必要的,我会毫不犹豫地将其发布在这里,但我必须承认它很长,对其他人来说可能有点不可理解.

And*_*rew 9

我只是直接引用这句话,从文章中链接;

说到内存泄漏,通常使用简单的null赋值来打破循环引用 - 泄漏的原因.通常不需要使用删除.此外,null'ing允许"取消引用"变量 - 删除通常无法执行的操作.

var el = document.getElementById('foo');
// circular reference is formed
el.onclick = function() { /* ... */ };
// circular reference is broken
el = null;
// can't `delete el` in this case, as `el` has DontDelete
Run Code Online (Sandbox Code Playgroud)

由于这些原因,最好在打破循环引用时坚持使用null.

删除说明