Эффективное управление памятью JavaScript на стороне сервера в API express/node.js

Обзор

В прошлом я читал об управлении памятью в JavaScript и знаю о проблеме с циклическими ссылками на DOM и т. д.

Однако мне все еще немного неудобно, поскольку это переводится в среду JavaScript на стороне сервера, такую ​​​​как node.js, а точнее в API, написанный на express.


Возьмите этот образец файла (назовем его server.js)

var npm_moduleA = require('npmA')({ someInitArg : 'blah' }),
    app = express.createServer();

app.get('/api/foo', function (req, res) {

    var result = npm_moduleA.doSomething();
    res.send(result);

});

app.get('/api/bar', function (req, res) {

    var npm_moduleB = require('npmB')({ someInitArg : 'blah' }),
        result = npm_moduleB.doSomethingElse();

    res.send(result);

});

Вопросы (при условии, что это сайт с высокой нагрузкой)

  1. Каков жизненный цикл npm_moduleA?Он получает создается в момент запуска сервера, но когда (если вообще GC срабатывает против него) - я предполагаю, что его никогда не трогают, потому что он находится в глобальной области?

  2. В '/api/bar/' следует ли npm_moduleBудалять после каждого запроса?Или это следует оставить на усмотрение сборщика мусора.

  3. Является ли глобальная реализация npm_moduleAзначительно более эффективной, чем повторная реализация (и возможное удаление) npm_moduleB?


Ссылки

11
задан Community 23 May 2017 в 11:51
поделиться