在nodejs / express中上传文件时内存泄漏

时间:2014-09-03 15:29:01

标签: node.js memory file-upload express memory-leaks

我在Express应用程序中有一个非常简单的上传表单。

接收表单提交的代码如下:

app.post('/import', function(req, res) {
    res.render('import-complete');
});

当我启动节点服务器时,节点进程使用了​​60MB的内存。 提交表单后,文件上传(250MB),内存使用量增加,达到~300MB。在上传结束时,内存使用率仍为300MB而没有“下降”。

因此,在“app.post”中没有可能导致内存泄漏的代码。发生了什么事?

1 个答案:

答案 0 :(得分:2)

您可能正在查看节点进程接收的已分配虚拟内存。由于您将250MB文件加载到内存中,因此您的节点进程将分配300 MB内存,但之后实际使用率要低得多。处理完路径后,该文件的内存会相对较快地进行垃圾回收,但即使不使用该进程,您的进程仍会进行分配。您可以分配比实际物理内存更多的虚拟内存。如果存在内存泄漏,不断使用更多文件命中该路由会增加虚拟内存。

您可以查看虚拟内存引用:What are the differences between virtual memory and physical memory?