Как избежать утечки памяти в nodejs?

Пишу паука на nodejs, столкнулся с тем, что он постоянно жрет все больше и больше памяти. Постарался привести к максимально простому виду, получилось следующее:

var humanize = require('humanize')
  , request  = require('request');
  
function fetch(url, c) {
  request(url, function(err, resp, body) {
        if (err) {
            c(err);
            return;
        }
        c(err, resp, body)
    });
}  

function callback(err, resp, body) {
    var memory = process.memoryUsage();
    console.log("Memory usage: " + humanize.filesize(memory.heapUsed) + " / " + humanize.filesize(memory.heapTotal));
    fetch('http://google.com', callback);
}

fetch('http://google.com', callback);


После запуска используется 8.57 MB / 17.77 MB, а через 20-30 запросов уже 13.09 MB / 45.71 MB.
Почему так происходит и как избежать увеличения потребления памяти?

P.S. Пробовал писать через события, по сути те же каллбэки, но на всякий случай. Результат тот же.
  • Вопрос задан
  • 5952 просмотра
Пригласить эксперта
Ответы на вопрос 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
habrahabr.ru/post/123154
читаем обзац
node --nouse-idle-notification --expose-gc server.js
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы