【问题标题】:Memory leak when upload file in nodejs/express在 nodejs/express 中上传文件时内存泄漏
【发布时间】:2014-09-03 15:29:01
【问题描述】:

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

接收表单提交的代码是这样的:

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

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

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

【问题讨论】:

  • 提交越多内存是否会继续增加?另外,您是否有任何中间件处于活动状态?
  • 不,如果我上传更多,内存不会增加。没有中间件
  • 你是如何监控内存增加的?
  • 在 Ubuntu 中带有系统监视器(我正在寻找节点进程)

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


【解决方案1】:

您可能正在查看您的节点进程收到的已分配虚拟内存。由于您将该 250MB 文件加载到内存中,因此您的节点进程被分配了 300MB 内存,但之后的实际使用量要低得多。在处理路由后,该文件的内存相对较快地被垃圾收集,但您的进程仍然拥有该分配,即使它不使用它。您可以分配比实际物理内存更多的虚拟内存。如果存在内存泄漏,继续使用更多文件访问该路由会增加虚拟内存。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-06
    • 2016-04-22
    • 2020-01-25
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多