在Javascript编码时是否可能创建内存泄漏?如果是这样,这取决于Javascript渲染引擎,例如V8或IE的Chakra
在迭代大型循环结构时,我的性能似乎非常慢。
我应该“删除”我不使用的变量吗?
var myVar = 'very very long string';
delete myVar;
答案 0 :(得分:0)
在您已经显示的示例中,除非myVar
在全局范围内,否则它将在函数末尾被垃圾收集。
通常,您不必担心JavaScript中的内存。当你无意中创建对象的引用并忘记它们时,你需要担心内存。例如:
function buttonClick() {
var clicked = false;
document.body.addEventListener('click', function(event) {
if (clicked) return;
if (event.target.nodeName !== 'button') return;
clicked = foo();
}, true);
}
上面的代码是错误的代码以开始(不清理事件监听器),但它说明了"内存泄漏的例子"在JavaScript中。调用buttonClick()
时,它会将函数绑定到click
上的<body>
事件。因为永远不会调用removeEventListener
来取消绑定侦听器,所以函数使用的内存永远不会被回收。这意味着每次调用buttonClick()
时,一点点内存就会泄漏&#34;。