最近在用node做游戏服务器的开发,发现了闭包导致的内存泄漏问题。
举个例子
function func1(c)
{
c();
}
function func2()
{
func1(
function(){
var obj_content={};//变量在回调函数内部
for(var i=0;i<20000000;i++){
obj_content[i]=i;
}
console.log(obj_content[1]);
obj_content=null;//把变量设置为空也不能释放
})
}
func2();//执行func2函数
setInterval(function(){console.log("aaa")},1000);//设置定时器,保持进程不会停止
然后再Linux下运行,发现内存一直被占用,不能释放。
obj_content=null; 这个代码已经把变量设置为null了,可为什么内存还是一直被占用呢?(使用delete删除对象obj_content的属性也不可以)