我真的很惊讶Node + Express在一个非常简单的任务中的行为。
我尝试做的只是通过多部分表单上传文件。 文件上载后,节点内存增加太多(巧合的是大约60 MB,大小与上传文件大小相同)并保持不变,直到重新启动节点进程。我想垃圾收集器应该释放分配的内存,但显然不是。一些信息:
为了解释这一点,我使用
从头创建了一个Node和Express项目express -ejs .
我将这个示例项目上传到GitHub(包括node_modules)只是为了澄清并且你有一个快照:https://github.com/CesarTrigo/node-express-memory-leak
正如您所看到的,我创建了两条路线,一条用于表单,另一条用于打印req内容。
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.post('/upload', function(req, res, next) {
console.log("/UPLOAD");
console.log(req);
res.end();
});
module.exports = router;
所以问题是,在上传10或12次后,Node进程崩溃,因为RAM仍在增加并且内存不足。
我错过了什么?请,欢迎一点帮助!!! 非常感谢你!
答案 0 :(得分:0)
我猜测图片console.log()
的问题。在线我发现其他人提到 console.log()
was leaking memory。
尝试执行其他操作,例如将其保存到文件中,看看是否会导致您现在遇到的主要内存泄漏。