我已經設置了一個gist來顯示內存使用率隨着時間的推移從磁盤流文件的小程序。nodejs fs似乎貪婪
在process.memoryUsage()
中分配爲rss
的內存永遠不會下降。從其他項目我知道另一個文件讀取將能夠重新使用一些內存,但該內存永遠不會釋放。
我知道當某些其他進程滿足內存要求時,操作系統可能會佔用內存不足並將其寫入交換空間,但這只是一個臨時修復(並且可能導致我的計算機無法使用交換空間沒有很好的理由)。
由於這個'泄漏'不在JavaScript堆中,我真的不認爲它與我傳輸此文件的方式有關,但我希望得到一些確認。有什麼我應該做的,導致這個內存被釋放?
$ node -v
v0.10.20
它是完全相同的文件嗎? –
該要點是一個任意的例子,它只流一個文件,但我的實際項目上傳和寫/讀許多文件。 – PagodaJosh
@PagodaJosh這很可能不是那麼貪婪;文件描述符應該已經關閉(綁定到「close」來知道什麼時候)。但是,V8中的垃圾收集器可能還沒有運行以釋放流所使用的內存。對於我來說,在一個大約330 MB的文件中,內存使用量會在「結束」和「關閉」之後下降45-50秒。 –