2013-03-01 41 views
1

運行此:爲什麼空的node.js腳本消耗越來越多的RAM?

setInterval(function() { 
    console.log(process.memoryUsage()); 
}, 1000); 

顯示內存使用量不斷增加:

{ rss: 9076736, heapTotal: 6131200, heapUsed: 2052352 } 
... some time later 
{ rss: 10960896, heapTotal: 6131200, heapUsed: 2939096 } 
... some time later 
{ rss: 11177984, heapTotal: 6131200, heapUsed: 3141576 } 

爲什麼會出現這種情況?

回答

2

程序是不,它的運行定時器,檢查內存使用情況,並寫入到控制檯一次第二。這會導致在堆中創建對象,並且在垃圾收集運行之前,堆的使用情況會不斷增加。

如果你放開它,每次觸發垃圾回收時最終應該看到heapUsed

+0

我已經在每個循環中添加了'global.gc()',並且用'--nouse-idle-notification --expose-gc'啓動了節點 - 沒有解決問題。這是爲什麼? – Fluffy 2013-03-01 16:49:32

+0

@Fluffy我剛剛嘗試過,並且做出這樣的改變確實使「heapUsed」基本上保持平坦。 – JohnnyHK 2013-03-01 17:39:00

+0

v8也做了很多工作來嘗試優化/重新編譯你的代碼和節點的代碼,但正如@JohnnyHK所說,它最終會變平坦,或者圍繞一條大致平坦的線條擺動。 – 2013-03-01 19:31:06