编辑问题
我试图理解为什么在简单的函数调用中存在内存泄漏。为什么节点在本地范围结束时不释放内存。
提前致谢
function somefunction()
{
var n = 20000;
var x ={};
for(var i=0; i<n; i++){
x['some'+i] = {"abc" : ("abc@yxy.com"+i)};
}
}
// Memory Leak
var init = process.memoryUsage();
somefunction();
var end = process.memoryUsage();
console.log("memory consumed 2nd Call : "+((end.rss-init.rss)/1024)+" KB");
答案 0 :(得分:1)
在编辑问题之前的先前答案以纠正代码错误:
结果无效,因为此代码不会调用该函数:
(function(){
somefunction();
});
声明了匿名函数但未调用。所以它在资源方面没有太大用处。
您需要调用该函数:
(function(){
somefunction();
}());
答案 1 :(得分:0)
@Mohit,两种策略都采用相同的内存消耗。分别运行每个代码并自行检查。
编辑: 等待gc。当gc调用时,内存应该是空闲的。尝试显式调用gc然后检查它。