【发布时间】:2015-06-21 17:35:56
【问题描述】:
我从谷歌加载我的日历。但每次我这样做时,节点都会使用 2 mb 以上的内存。即使我删除了模块。我需要每 5 或 10 分钟加载一次,以便查看是否有更改。这是我的代码。
google-calender.js 模块
module.exports = {
loadCalendars: function(acces, res){
gcal = require('google-calendar');
google_calendar = new gcal.GoogleCalendar(acces);
google_calendar.calendarList.list(function(err, calendarList) {
toLoadCalenders = calendarList.items.length;
loaded = 0;
data = [];
for(var i = 0; i < toLoadCalenders; i++){
google_calendar.events.list(calendarList.items[i].id, function(err, calendarList) {
loaded++;
data.push(calendarList);
if (loaded == toLoadCalenders) {
res.send(data);
}
});
}
});
}
}
main.js
app.get('/google-calender', function (req, res) {
google = require('./google-calender');
google.loadCalendars(acces, res);
setTimeout(function(){
delete google;
},500);
});
有谁知道如何防止这里的内存泄漏?
【问题讨论】:
-
仅供参考,您不要
deleteJavascript 中的变量。您没有显示变量google的声明位置,但通常您只是让它超出范围,如果没有其他人引用它,垃圾收集器将为您清理它。您可能想阅读以下内容:perfectionkills.com/understanding-delete -
要查看是否真的存在泄漏,您必须拍摄堆快照以查看实际使用的内存与等待重用的未使用内存。
标签: node.js memory-leaks google-authentication