Tag: 内存泄漏

这个nodejs代码是一个循环引用吗?

它们只是来自node.js官方文档的几行。 client.on('data', function(data) { console.log(data.toString()); client.end(); }); 我认为客户端对象已经引用了callback,callback对客户端对象有一个闭包引用。 那是对的吗? 如果是的话,为什么这是鼓励?

如何解决setTimeoutclosures内存泄漏?

有人可以请解释如何解决这个内存泄漏在nodejs: var foo = function (data, cb) { cb(data); }; setInterval(function() { foo('asdf', function(data) { console.log(data); }); }, 500);

asynchronous代码是否导致内存泄漏?

我担心asynchronous操作是否容易发生内存泄漏。 我的上下文是在前端使用Javascript和后端(node.js) 在execute操作中,创build代表IResponder 。 它具有对主要模块的参考,以及success和fault方法。 asyncOperation执行asyncOperation并调用IResponder的result或fault方法。 我的问题是:我希望exampleModule被释放在主程序的末尾,因为我看到有一些循环引用进行封闭等。请告知或确认。 execute: function() { var self = this; function IResponder() { this.result = function(data) {self.result(data)}; this.fault = function(info) {self.fault(info)}; } var exampleModule = new ExampleModule(); exampleModule.asyncOperation(new IResponder());//calls back result or fault of IResponder }, success: function(data) { //is exampleModule deallocated here? }, fault: function(info) { // //is exampleModule deallocated […]

Node.js AWS-SDK SQS内存泄漏

我在Node.js中写了一个websocket模块 在Google云中的虚拟机上运行Debian Jessie。 它通过PM2作为服务运行。 该服务获取请求,发送响应并将一些数据发送到AWS SQS(查询服务)。 我有一个发送消息到队列的自定义类,它有内存泄漏: var AWS = require("aws-sdk"); var logger = require("./Logger"); AWS.config.loadFromPath("/home/admin/.aws/cred.json"); function QueueService() { this.sqs = new AWS.SQS(); this.queue = "https://sqs.eu-central-1.amazonaws.com/4864251684/MyQueue"; } QueueService.prototype.sendItemToStatistics = function (message, reqJson, wsConnection, queue) { try { logger.log("silly", "QueueUrl", queue) this.sqs.sendMessage({ MessageBody: message, QueueUrl: queue, DelaySeconds: 0 }, function (err, data) { if (err) logger.log("error", […]

节点JS应用程序内存压力上升

我正在研究一个Node JS应用程序,并面临严重的内存压力问题。 以下是启动应用程序(恒定负载)60分钟内的内存使用趋势: 记忆用途大幅上涨至95%,但之后保持相当稳定。 我之前和之后采取了内存转储,但似乎有一些与我如何捕获转储的问题,因为两个转储文件之间的差异只是几个MB。 这是在chrome分析中heapdump的样子: 但是我对这个很陌生,不确定我应该找什么。 有人可以提供任何关于如何找出内存问题的指针,如何检测内存泄漏,或如何理解这里提到的heapdump文件? 节点版本:0.12.14 输出为 – find node_modules -type f -name "*.node" – 如下所示: node_modules/simpleflake/node_modules/bignum/build/Release/bignum.node node_modules/simpleflake/node_modules/bignum/build/Release/obj.target/bignum.node node_modules/heapdump/build/Release/addon.node node_modules/heapdump/build/Release/obj.target/addon.node node_modules/couchbase/build/Release/couchbase_impl.node – npm list –depth=0输出如下: aws-sdk@2.5.3 body-parser@1.11.0 check-types@6.0.0 couchbase@2.2.2 elasticsearch@10.1.3 expect@1.20.2 express@4.14.0 jshint@2.9.3 minimist@1.1.3 mocha@2.5.3 moment@2.9.0 morgan@1.5.3 newrelic@1.30.0 request@2.53.0 simpleflake@1.0.0 underscore@1.7.0 why-is-node-running@1.2.2 (https://github.com/mindtickle/why-is-node-running.git#96f3c8da54b110e8a9a1423361d2da7c125784f6) winston@1.0.2 winston-aws-cloudwatch@0.4.2 另外,是否有可能看到我正在使用的任何包是否负责内存泄漏? 提前致谢。

使用下载pipe理器取消下载时,Nodejs内存泄漏

我使用Expressjs 3和Nodejs 0.10创build了一个简单的文件下载器 function download(req, res, filepath, filename){ res.header('Content-Type', 'application/force-download'); res.header('Content-Type', 'application/octet-stream'); res.attachment(filename); res.download(filepath, filename); } 一切正常,但是当我使用下载pipe理器(例如Internet Download Manager)testing应用程序时,当我放弃或取消下载(在下载之前或下载期间)时,会发出警告: Trace at Socket.EventEmitter.addListener (events.js:160:15) at Socket.Readable.on (_stream_readable.js:653:33) at Socket.EventEmitter.once (events.js:179:8) at TCP.onread (net.js:512:26) (node) warning: <b>possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.</b> 如何在中止文件下载后删除监听器?

(节点)警告:检测到可能的EventEmitter内存泄漏

我写了一个基于cheerio.js和request.js构build的小脚本,用于从订阅代理站点获取联系信息(URL和电子邮件)。 虽然它运行并返回我需要的所有信息,但在运行时,我连续5次收到以下警告: (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. Trace at Socket.EventEmitter.addListener (events.js:160:15) at Socket.Readable.on (_stream_readable.js:689:33) at Socket.EventEmitter.once (events.js:179:8) at Request.onResponse (/home/max/Desktop/scraping/node_modules/request/request.js:625:25) at ClientRequest.g (events.js:175:14) at ClientRequest.EventEmitter.emit (events.js:95:17) at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1689:21) at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:120:23) at Socket.socketOnData [as ondata] (http.js:1584:20) at TCP.onread (net.js:525:27) 我的本能告诉我,我可能会得到这个警告,因为我嵌套在另一个请求的请求。 […]

简单的websocket例子中的Node.js内存泄漏

这是一个简单的“server.js”脚本,似乎是泄漏内存…. var maxMem = 0; var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({port: 8080}); wss.on('connection', function(ws) { ws.on('close', function() { global.gc(); var mu = process.memoryUsage(); console.log("mem: " + mu.heapUsed); if (mu.heapUsed > maxMem) { maxMem = mu.heapUsed; console.log("*** new max: " + maxMem); } }); }); 这里是一个'client.js'脚本,简单地打开/closuresWebSockets之间短暂的延迟…. var WebSocket = require('ws'); function doCycle() { […]

在Node.js |中捕获致命错误 致命错误:CALL_AND_RETRY_0分配失败 – 进程内存不足

我想知道是否有办法赶上这个错误: FATAL ERROR: CALL_AND_RETRY_0 Allocation failed – process out of memory 我努力了: process.on('uncaughtException', function(err){ //do something }) 但是这并没有发现错误。 任何帮助将不胜感激 PS这发生在生成一个约18个文件的string的MD5散列时,我正在使用这样的md5模块: for(i=0;i<array.length;i++){ fs.readFile(array[i], function(err,buf){ console.log(mdf(buf)) }) }

在进行大量HTTP请求时节点JS内存泄漏

我正在尝试运行以下节点脚本: var request = require('request'); var async = require('async'); var util = require('util'); function makeRequest(dom, cb) { request("http://" + dom, function(err, response, body) { console.log(util.inspect(process.memoryUsage())); cb(); }); } var arr = []; for (var i = 0; i < 1600000; i++) { arr.push("google.com"); } async.eachLimit(arr, 100, function(dom, call) { process.nextTick(function() { makeRequest(dom, call); }); }, […]