Сейчас я работаю с nodejs проектом, в котором один из контроллера выглядит следующийПонимания nodejs памяти утечка
var express = require('express'),
router = express.Router(),
blah = require('blah'),
Foo = require('../models/foo');
/* Get all foos */
router.get('/', function (req, res) {
Foo
.getAll()
.then(function (foo) {
return res.json({
foo: blah(foo)
});
})
.catch(function (err) {
//handle error;
});
});
/*
* Some other functions
*
*/
Необходимый модуль л и модель Foo используется внутри маршрутизатор конечной точки. Согласно этой статье http://www.ibm.com/developerworks/library/wa-memleak/, я предположил, что сборщик мусора не будет собран из-за того, что на него ссылается замыкание внутри него и может создать утечку памяти.
В таком случае, какой правильный способ освобождения памяти?
Мне не нужно использовать модель Foo = require ('../ models/foo'); после того, как я с ним справился. Так я должен назначить его null после окончания работы с ним? –
@MuhammadRaihanMuhaimin - Прежде всего, установка 'Foo = null' не сохранит вам никакой памяти. Модуль уже находится в кеше модуля, поэтому это ничего не освободит. Во-вторых, как можно «сделать» с «Foo»? Ваш 'router.get()' регистрирует обработчик маршрута, который все равно может попасть в любое время в будущем. – jfriend00