2017-02-10 3 views
0

Отредактированный вопросУтечка памяти в nodejs при простом вызове функции

Я пытался понять, почему происходит утечка памяти в простом вызове функции. почему узел не освобождает память, поскольку локальная область действия завершена.

Заранее спасибо

function somefunction() 
{ 
    var n = 20000; 
    var x ={}; 
    for(var i=0; i<n; i++){ 
     x['some'+i] = {"abc" : ("[email protected]"+i)}; 
    } 

} 

// Memory Leak 
var init = process.memoryUsage(); 
somefunction(); 
var end = process.memoryUsage(); 
console.log("memory consumed 2nd Call : "+((end.rss-init.rss)/1024)+" KB"); 

ответ

1

предыдущий ответ, прежде чем вопрос был отредактирован, чтобы исправить ошибку код:

Результаты являются недействительными, поскольку этот код не вызывает функцию:

(function(){ 
    somefunction(); 
}); 

Анонимная функция объявлена, но не вызывается. Поэтому он мало использует ресурсы.

Вам нужно вызвать функцию:

(function(){ 
    somefunction(); 
}()); 
+0

Спасибо, что упомянул –

+0

Я отредактировал мой вопрос, в основном, я пытался найти, почему он потребляет память, он должен освобождать память, поскольку выполнение выходит из локальной области –

+0

Двигатель V8 освобождает память кучи всякий раз, когда захочет, в основном , Если вы хотите заставить GC, см. Этот ответ http://stackoverflow.com/questions/30766753/nodejs-socket-io-simple-code-memory-leak/30786603#30786603 –

0

@Mohit, обе стратегии с таким же объемом памяти. Запускайте каждый код отдельно и проверяйте самостоятельно.

EDIT: Ждут gc. Когда gc вызовет, память должна быть бесплатной. Попробуйте вызвать gc явно, затем проверьте его.

+0

Я отредактировал мой вопрос, в основном я пытался чтобы найти, почему он потребляет память, он должен освобождать память, поскольку выполнение выходит из локальной области –

Смежные вопросы