我在我的节点js app中面临内存泄漏问题。我无法在此处发布代码,但我想知道这些内容是否会导致内存泄漏。这可以帮助我知道我可能在哪里做错了什么:
e.g。
window.onload = function() {
// script for Smartsupp Live Chat
};
现在,如果我在POST 路线中调用此功能,则每次都会声明function Foo(){
var foo = {a: 'b'};
console.log(foo);
}
。它是否释放内存或旧的var foo
仍然在某个地方持有内存?我是否需要在函数的最后一个语句中明确地执行var foo
之类的操作? (注意foo是一个对象。我也想知道它是一个整数还是字符串)。
我想说的是这样的:
foo = null
这可能类似于1st,但我仍然想知道:
app.post('/home', function (req, res) {
Foo();
res.end();
});
对于每个请求,我是否需要这样做:?
app.post('/home', function (req, res) {
var foo2 = 5;
res.write("Something");
res.end();
});
或者会自动释放吗?
如果您看到第二点,则此处未使用app.post('/home', function (req, res) {
var foo2 = 5;
res.write(foo2);
foo2 = null;
res.end();
});
。我是否还需要 null 或(类似这样)来防止内存泄漏?
全局变量:
var globalVar = 5; app.post(' / home',function(req,res){ glbalVar = globalVar + 1; res.write("东西&#34); 重发(); });
这里,4和2之间的唯一区别是变量范围。我需要 null 这个变量还是覆盖它自己释放内存?
编辑:
正如所建议的那样,我在T.J.上阅读了原始问题的另一个答案。克劳德。它清除了一些东西给我,但我仍然怀疑我的第3点和第4点.3,req
对象不是由我创建的,所以我需要它来制作req
? 4,变量是全局的。它会遵循T.J所说的相同的事情吗?
现在,随着一些事情被清除,我在这里再添加一个情况,即我在我的脚本中使用node-apn并跟随异步代码块:
null
我怎么称呼它是这样的:
apnProvider.send(note, deviceToken).then( (result) => {
// see documentation for an explanation of result
});
现在我的另一个问题是:T.J告诉我这个关闭的例子吗?由于我在等待我的通知异步函数的响应之前已经结束app.post('/home', function (req, res) {
var data = {foo: req.body.bar};
// above object has all data required to send push notification
sendNotification (data);
res.end();
});
function sendNotification(data){
//other lines of code
//I use data to get note, deviceToken
apnProvider.send(note, deviceToken).then( (result) => {
console.log(result);
});
}
,这个闭包(如果是)会导致内存泄漏,因为它将保留我的{{1}对象?