我正在研究我们的nodejs应用程序泄漏内存的原因。我不是一个非常熟练的nodejs程序员(我通常使用C#)所以我试图在这个主题上尽可能多地阅读文档以找到原因和解决方案。
This question和mostly this blogpost告诉了我关闭的危险。我们的代码充满了闭包,所以我试图分析这两个链接中提到的情况是否适用。
然后在许多javascript代码中习惯写“var self = this;”在使用闭包时,例如解释here。一个称为词汇封闭的“特征”。这也在我们的代码中大量使用。
所以我的问题是,如果你使用这个词法闭包技术,但你没有在你的函数结束时将self设置为null,你是否泄漏了自己/这个?
举一个具体的例子,这个函数是否会导致泄漏:
Achievement.INSERT_QUERY = "SOME QUERY";
Achievement.prototype.insert = function(child, achievement){
var self = this;
var data = [child, achievement];
return this._query(Achievement.INSERT_QUERY, data, function insertResultHandler(err, result){
if(err) {
self.emit(DB.ERROR, err);
return false;
}
self.emit(DB.UPDATED, data);
});
}
非常感谢任何澄清!