1

我已经设置了一个要点来显示一个从磁盘流式传输文件的小程序随时间推移的内存使用情况。

分配的内存rss永远process.memoryUsage()不会下降。从其他项目中,我知道另一个文件读取将能够重用其中的一些内存,但该内存永远不会被释放。

我知道当其他一些进程满足内存时,操作系统可以占用未充分利用的内存并将其写入交换,但这只是一个临时修复(并且可能导致我的机器无缘无故地用完交换) .

由于此“泄漏”不在 javascript 堆中,因此我认为这与我流式传输此文件的方式无关,但我想确认一下。我应该做些什么来释放这个内存吗?

$ node -v
v0.10.20
4

1 回答 1

0

我遇到的问题归结为与您的非常相似的最小测试用例 - 我在 Web 服务器进程中对文件进行了即时 zip 压缩。

为了找到这个线程的人 - 根据您打开的 node.js错误报告上的 bnoordhuis ,您必须使用选项调用您的脚本 --max_old_space_size=32 --expose_gc(将 32 MB 调整为您想要的任何内容),然后定期调用 gc()。这对我的测试用例有帮助,希望对我的应用程序也有帮助。

默认限制为 1.5 GB。如果您只想流式传输一些文件,无需在服务器上做更多工作,无需记住状态,并且您在一台有很多其他事情要做的小型服务器上使用 node.js“以提高效率”,这将非常令人惊讶。

于 2014-04-12T21:28:27.193 回答