2017-02-10 60 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,這兩個策略採取相同的內存消耗。分別運行每個代碼並自行檢查。編輯: 等gc。當gc調用時,內存應該是免費的。嘗試明確調用gc然後檢查它。

+0

我編輯我的問題,基本上我試圖爲了找到它消耗內存的原因,它應該釋放內存,因爲執行從本地範圍退出 –