Articles of 内存泄漏

expressjs文件下载内存泄漏

我得到了一个非常奇怪的行为ExpressJs下面的代码如果命中多个请求在第二次抛出404到客户端,看着日志,我看到的是以下内容: (节点:1460)警告:检测到可能的EventEmitter内存泄漏。 添加了11个文件监听器。 使用emitter.setMaxListeners()来增加限制 目标方法(从AWS S3存储桶下载文件并pipe理响应): exports.download = function (req, res) { var fileName = req.params.fileName; var options = { Bucket: config.s3.bucket, Key: fileName }; res.attachment(fileName); s3.getObject(options).createReadStream().on('error', function(err){ console.log(err); }).pipe(res); }

Node.JS Dynamodb内存问题与put

现在我遇到了在文档客户端上使用Dynamodb的put方法的问题。 当我现在用put方法运行我的程序时,内存从70MB开始,跳到90MB,然后继续稳定到65MB左右。 Uncommented了我的程序的内存跳转到90MB,并不断增长。 var params; for (var i = 0; i < tuples.length; i++){ if(tuples[i][1] != ""){ params = { TableName: "wordTable2", Item:{ "word":tuples[i][1], "url":tuples[i][0], "info":tuples[i][2] } }; var dynamobd = new AWS.DynamoDB.DocumentClient(); dynamobd.put(params, function(err, data){ //if(err) console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2)); //else console.log("Added item:", JSON.stringify(data, null, 2)); }); dynamobd = […]

新的Date()是否会在node.js中发生内存泄漏?

在这第一个例子中,我正在更新现有的MongoDB文档。 将date: new Date()导致内存泄漏? 如果不是,为什么? 我读了一个地方,每当你使用new关键字分配一个新的对象,你必须自己释放它。 var update = { $inc: { wins: 1 }, $push: { pastMatches: { date: new Date, winner: winner, loser: loser } } }; Character.update({ characterId: winner }, update); 在第二个示例中 ,我使用以下Express.js中间件进行错误日志logging。 如果每次在应用程序路由中出现错误时调用它,这个代码是否会导致内存泄漏? 新的date()会得到垃圾吗? app.use(function(err, req, res, next) { console.error(new Date, err); res.send(500); }); 谢谢! 我试图在应用程序中查找内存泄漏,这些例子对我来说是很有用的。

node.js读取文件内存泄漏

我使用node.js来每秒读取一个图像。 这个想法是以后推到networking浏览器,使它成为一个简单的stream。 代码如下所示: var fs = require("fs"); var intervalTimerObj; function startStream() { if(!intervalTimerObj) { intervalTimerObj = setInterval( updateStream , 1000); } } function updateStream(){ fs.readFile( __dirname + "/pic.jpg", function(err, image) { }); } startStream(); 当运行上面的代码时,我的内存很快就填满了,似乎得到了内存泄漏。 我加载的图像文件越大,填满的速度越快。 我究竟做错了什么? 有什么方法来释放图像variables? 我试过将它归零。

内存泄漏在NodeJS

在这个非常简单的代码中,我得到了一个内存泄漏,它连接到一个TCP服务器并发送一些数据。 一夜之间它已经在运行它的机器上使用了23GB! 我已经尝试v0.12.7和iojs版本3,都有相同的结果! var net = require("net"); var client = net.connect({ host: '127.0.0.1', port: 4444 }, function() { console.log("Connected"); }); client.on("data", function(data) { xml = data.toString(); console.log(xml); });

这个函数有没有内存泄漏?

看起来好像我在下面的函数中有一个内存泄漏,因为脚本在运行时吃了大量的内存。 任何人都可以发现内存泄漏? Base.prototype.optimize = function(configurations, data, investment, profitability, callback) { var self = this; process.stdout.write('Optimizing…'); // Exclude configurations that have already been backtested. self.removeCompletedConfigurations(configurations, function() { var configurationCompletionCount = -1; var configurationsCount = configurations.length; async.each(configurations, function(configuration, asyncCallback) { configurationCompletionCount++; process.stdout.cursorTo(13); process.stdout.write(configurationCompletionCount + ' of ' + configurationsCount + ' completed'); // Instantiate a fresh strategy. […]

Socket.io和node.js,不能理解内存使用情况

我目前在我的服务器上使用socket.io v1.4.2和node.js v0.10.29。 我试图跟踪我的应用程序中的内存泄漏,我不知道,但我认为socket.io是我的问题的一部分。 所以这里的服务器代码(演示例子): var server = require ('http').createServer (); var io = require ('socket.io')(server); io.on ("connection", function (socket) { socket.on ('disconnect', function (data) { /* Do nothing */ }); }); 第一步:内存:58Mb 第2步:我创build了很多客户端(〜10000),内存:300 Mb 第三步:closures所有的客户,等待GC的工作 第四步:我看看我的记忆:100 Mb:'( 步骤5:与步骤2和3相同 第6步:内存160Mb … 等等,记忆不断增长。 我认为GC是懒惰的,所以我重试了下面的代码: setInterval (function () { global.gc (); }, 30000); 我开始我的app.js: node –expose-gc app.js […]

nodejs内存泄漏(async.queue和请求)

我有一个非常简单的爬虫,它通过250页,分配大约400MB的内存,永远不会释放它。 我不知道如何解决它,也许有人注意到一些东西,请让我知道。 function scrape(shop, o, cb, step) { var itemz = [] var q = async.queue(function (o, cb) { req({ url: o.url }, function (e, r) { if (e) throw (e) cb() o.cb(r.body) }) }, o.threads) var get = function (url, cb) { q.push({ url: url, cb: cb }) } var url = 'https://www.host.com' var […]

这个Object.keys(o).forEach(…)是否在node.js GC密钥迭代完成后执行?

基于这个答案 ,这将“ 加载所有的钥匙到内存 ”: Object.keys(o).forEach(function(key) { var val = o[key]; logic(); }); 记忆被“释放”了吗? 还是有什么东西需要“ 零 ”呢?

没有EventEmiter检测到可能的EventEmitter内存泄漏

我已经尝试了很长时间来自己解决这个问题,但是找不到适合我的问题的解决办法。 我有这个方法: handle_database = function(callback, req, res) { pool.getConnection(function(err,connection){ if (err) { res.json({"code" : 100, "status" : "Error in connection database"}); return; } connection.query("select * from `atable`",function(err,rows){ connection.release(); if(!err) { callback(rows); } }); connection.on('error', function(err) { res.json({"code" : 100, "status" : "Error in connection database"}); return; }); }); } 这个方法在我的routes.js中以这种方式使用: router.get('/', function(req, res){ db.getUsers(function (data) […]