我已经设置了一个gist来显示内存使用率随着时间的推移从磁盘流文件的小程序。nodejs fs似乎贪婪
在process.memoryUsage()
中分配为rss
的内存永远不会下降。从其他项目我知道另一个文件读取将能够重新使用一些内存,但该内存永远不会释放。
我知道当某些其他进程满足内存要求时,操作系统可能会占用内存不足并将其写入交换空间,但这只是一个临时修复(并且可能导致我的计算机无法使用交换空间没有很好的理由)。
由于这个'泄漏'不在JavaScript堆中,我真的不认为它与我传输此文件的方式有关,但我希望得到一些确认。有什么我应该做的,导致这个内存被释放?
$ node -v
v0.10.20
它是完全相同的文件吗? –
该要点是一个任意的例子,它只流一个文件,但我的实际项目上传和写/读许多文件。 – PagodaJosh
@PagodaJosh这很可能不是那么贪婪;文件描述符应该已经关闭(绑定到“close”来知道什么时候)。但是,V8中的垃圾收集器可能还没有运行以释放流所使用的内存。对于我来说,在一个大约330 MB的文件中,内存使用量会在“结束”和“关闭”之后下降45-50秒。 –