Могут ли различные типы переменных областей привести к утечке памяти в NodeJs?

Я столкнулся с проблемой утечки памяти в моем приложении 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. Маршрут

Это может быть похоже на 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();
});

Или он автоматически освободит его?

  1. Если вы видите вторую точку, req здесь не используется. Нужно ли мне также null или (что-то вроде этого) для предотвращения утечки памяти?

  2. Глобальная переменная:

    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?