Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs express-这是内存泄漏吗?_Node.js_Debugging_Memory_Memory Leaks_Out Of Memory - Fatal编程技术网

Node.js Nodejs express-这是内存泄漏吗?

Node.js Nodejs express-这是内存泄漏吗?,node.js,debugging,memory,memory-leaks,out-of-memory,Node.js,Debugging,Memory,Memory Leaks,Out Of Memory,您好,我是Node的初学者,非常感谢您的帮助 我有一个nodejsexpressapi项目,它会导致随机的高内存使用率。 我使用process.memoryUsage()关注内存消耗堆在30mb到40mb之间保持不变,但一天中有一两次节点服务器崩溃,说Javascript堆内存不足,我不得不手动重新启动它 生产内存使用情况: ["Memory: rss 93.25 MB","Memory: heapTotal 40.68 MB","Memory:

您好,我是Node的初学者,非常感谢您的帮助

我有一个nodejsexpressapi项目,它会导致随机的高内存使用率。 我使用
process.memoryUsage()
关注内存消耗堆在30mb到40mb之间保持不变,但一天中有一两次节点服务器崩溃,说Javascript堆内存不足,我不得不手动重新启动它

生产内存使用情况:

["Memory: rss 93.25 MB","Memory: heapTotal 40.68 MB","Memory: heapUsed 30.12 MB","Memory: external 19.47 MB","Memory: arrayBuffers 18 MB"]
简单解释一下我的项目架构,让我知道它是否正确:

index.js

routes.js

api.js(控制器)

现在在我的控制器中,我还有各种全局函数,比如调用一些外部RESTAPI,一些数组计算,一些迭代。那么全局函数是否通过GC自动释放?我还附上了一个堆截图,所有的函数都在泄漏内存吗?

 var path = require('path');
    var logger = require('morgan');
     
    var express = require('express');
    var mongoose = require('mongoose');
    var cors = require('cors');
    var cookieParser = require('cookie-parser');
    var ObjectId = require('mongodb').ObjectID;
    const routes = require('./routes/appapiv1/routes');
    var app = express();
    mongoose.connect('mongodb://localhost:27017/Database', { useUnifiedTopology: true, useNewUrlParser: true });
    const db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function () {
         
    });

app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// Make our db accessible to our router
app.use(function (req, res, next) {
    req.db = db;
    next();
});
    app.use(express.static('public', options))
    app.use(logger('dev'));
    //app.use(bodyParser.json());
    //app.use(bodyParser.urlencoded({ extended: true }));
    app.use(express.json({ limit: '50mb' }));
    app.use(express.urlencoded({ limit: '50mb', extended: true }));
    app.use('/', routes);
    app.listen(port);
var express = require('express');
var Api = require('../appapiv1/api');
const router = express.Router();

router.post('/apiOne', Api.functionOne);
router.get('/apiTwo', Api.functionTwo);
router.post('/apiThree', Api.functionThree);
module.exports = router;
  var Api = {};
Api.functionOne = function (req, res) {

    res.send({ status: 1, data: data });
};

var someFunction = function () {
    //doing some work and returing
}
Api.functionTwo = function (req, res) {
    var object = someFunction();
    res.send({ status: 1, data: data });
};
var someFunctionMore = function () {
    //doing some work and returing
}
Api.functionThree = function (req, res) {
    var object = someFunction();
    res.send({ status: 1, data: data });
};

module.exports = Api;