Я столкнулся с проблемой утечки памяти в моем приложении node js. Я не могу опубликовать код здесь, но я хотел бы знать, могут ли эти вещи вызвать утечку памяти. Это может помочь мне узнать, где я могу сделать что-то неправильно:
- Локальная переменная внутри функции:
 
например.
function Foo(){
  var foo = {a: 'b'};
  console.log(foo);
}
Теперь, если я вызову эту функцию в POST  route, она будет объявлять var foo каждый раз. Он освобождает память или старый var foo все еще где-то держит память? Нужно ли явно делать что-то вроде foo = null в последнем утверждении моей функции? (Обратите внимание, что foo - это объект здесь. Я также хотел бы знать, было ли это целым числом или строкой).
Я хочу сказать следующее:
app.post('/home', function (req, res) {
    Foo();
    res.end();
});
- Маршрут
 
Это может быть похоже на 1-е, но все же я хочу знать:
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();
});
Или он автоматически освободит его?
-  
Если вы видите вторую точку,
reqздесь не используется. Нужно ли мне также null или (что-то вроде этого) для предотвращения утечки памяти? -  
Глобальная переменная:
var globalVar = 5; app.post('/home', function (req, res) { glbalVar = globalVar + 1; res.write( "Что-то" ); Отправить(); });
 
Здесь единственное различие между 4 и 2 - это область переменных. Нужно ли мне null изменять эту переменную или переопределять память?
EDIT:
Как и было предложено, я прочитал другой ответ по оригинальному вопросу T.J. Crowder. Это очистило некоторые вещи для меня, но я все еще сомневаюсь в своих пунктах 3 и 4. В 3, req объект НЕ создан мной, так что мне нужно его сделать null? В 4 переменная является глобальной. Будет ли оно следовать тому же, что сказано T.J?
Теперь, когда некоторые вещи очищаются, я добавляю здесь еще одну ситуацию, которая заключается в использовании node-apn в моем script и имеет следующий код асинхронного кода:
apnProvider.send(note, deviceToken).then( (result) => {
  // see documentation for an explanation of result
});
Как я называю это так:
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);
  });
}
Теперь мой другой вопрос: этот пример закрытия, как сказал T.J? И так как я закончил res, прежде чем ждать ответа функции async уведомлений, будет ли это  закрытие (если оно есть), приведет к утечке памяти, поскольку он будет содержать мой объект data?