Articles of 内存

Node.js内存填满

我正在尝试编写一个下载大型压缩文件的程序,将其解压到内存中,然后将内容(一系列CSV文件)推送到MongoDB。 但是,我一直在点击程序停止和打印点 FATAL ERROR: CodeRange::GetNextAllocationBlock Allocation failed – process out of memory 当他们不再被使用时,我将缓冲区设置为null,一旦它们在Mongo中,logging就设置为null,并且一次阻止处理多个文件。 这一切都没有帮助。 有没有更多的技巧来释放内存?

RSS和堆有什么区别?

在Node.js的情况下,我经常遇到提及RSS内存的情况。 关于RSS的维基百科文章非常简洁,我仍然不确定它与堆内存的区别。 它是堆+堆栈吗? 有人能像我5岁那样向我解释吗?

Node.js获取高内存使用率的通知

我在Amazon EC2的Ubuntu 14上运行了一个Node.js应用程序。 如果内存使用量达到特定的大小,我想发送电子邮件。 我知道,PM2公开了一个API,它允许在达到一定的内存使用量时重新启动应用程序。 现在我不想在这个时候重新启动应用程序,只是为了得到一个关于它的通知,并用它来做任何我想要的(在我的情况下,发送一封电子邮件)。 我怎样才能使用PM2或任何其他免费工具?

在查询的时候用mongoose来降低内存使用的方法

我正在研究节点后端,试图通过mongoose来优化对mongodb的非常大的查询。 预期的返回大小是相当可观的,但是由于某种原因,当我发出请求时,节点开始消耗大量的内存,例如200MB +用于一个大的请求。 考虑到大多数情况下,回报的规模小于10mb,这似乎并不正确。 在完成之后,它也拒绝释放内存,我知道这可能只是V8 GC的默认行为,但是我担心的是,单个find()请求会消耗大量的内存。 我通过testingfind()调用来隔离它。 一旦完成了调用,它将执行一些后处理,然后将数据发送到一个callback函数,全部使用匿名函数。 我曾尝试使用查询stream而不是model.find(),但它显示没有真正的改进。 环顾四周没有得到任何回应,所以我会问,有没有一种已知的方法来减less,控制或优化mongoose的内存使用? 有谁知道为什么如此多的内存被用于一个单一的电话? 编辑 根据Johnny和Blakes的build议,使用lean()和streaming的混合,并使用暂停和恢复,极大地改善了运行时和内存的使用。 谢谢!

nodejs v8.getHeapStatistics方法

在nodejs v8模块中,有一个名为getHeapStatistics的函数,它返回一个包含有关内存使用情况信息的对象: { total_heap_size: 221540352, total_heap_size_executable: 5242880, total_physical_size: 221540352, total_available_size: 1286110104, used_heap_size: 189179192, heap_size_limit: 1501560832, malloced_memory: 16384, peak_malloced_memory: 1325112, does_zap_garbage: 0 } 每个领域的含义是什么?

NodeJS / ExpressJS内存泄漏

我有一个像这样的静态ExpressJS服务器: var express = require("express"), app = express(); app.use(express.static(__dirname)); app.listen(1050); 当我启动服务器时,它使用20MB的V8堆。 如果我每秒刷新一次页面,那么使用的堆会不断增长。 4小时后,使用了40MB的v8堆。 总共8个堆栈变为80MB,RSS(进程使用的总内存)变为130MB。 为什么这个简单和静态的服务器使用这么多内存? 这似乎是一个内存泄漏。 如果我不停止页面重新加载,使用的内存不断增长。 如果像这样一个简单的静态服务器使用太多的内存是不可能做大项目。 NodeJS版本:v0.10.21 ExpressJS版本:3.3.5 编辑:我注意到,这是一个NodeJS的问题,因为我试图节点静态,而不是明确的,而使用/总V8堆保持不变,节点J使用的RSS内存继续增长。 屏幕: http://img.nodejscore.com/memory/Screenshot 2014-03-20 14.06.57.png https://www.dropbox.com/s/0c30ou8l3rv2081/Screenshot%202014-03-20%2014.07 .54.png http://img.nodejscore.com/memory/Screenshot 2014-03-20 14.08.10.png (13:48开始)

使用stream时,knex.js上的内存问题

我想用knex.js将整个sqlite3数据库表导出为CSV。 由于表可以达到300000行,我使用stream没有内存问题。 但是,如果我看我的应用程序的内存使用高达800MB或我有一个“内存不足”的错误。 我怎样才能处理sqlite3数据库上的knex.js的大型查询结果? 下面的代码示例: knex.select().from(table).stream(function (stream) { var stringifier = stringify(opts); var fileStream = fs.createWriteStream(file); var i = 0; stringifier.on('readable', function() { var row; while (row = stringifier.read()) { fileStream.write(row); console.log("row " + i++); //debug } }); fileStream.once('open', function(fd) { stream.pipe(stringifier); }); }); 编辑 似乎sqlite3数据库的knex.jsstream是“假”stream。 下面是knex中sqlite3的stream函数的源代码: Runner_SQLite3.prototype._stream = Promise.method(function(sql, stream, options) { /*jshint unused: […]

优化Node.js内存消耗

我在Node.js,Express和MongoDB中编写了一个简单的cms。 我打算为每个站点运行不同的Node.js进程。 问题是,启动后,这个过程需要大约90米的内存,对我来说太大(8个站点需要所有的服务器内存)。 此内存是在第一次连接到站点后进行的,其他连接不会影响内存。 有没有一个指导或“最佳实践”的列表来优化这种内存使用情况? 我试图追踪内存分配与process.memoryUsage()或类似的function,但这并不简单。 不是内存泄漏或类似的问题,因为在第一次连接后内存使用不会增长,所以可能的优化可能是加载更less的模块或做不同的事情…

如何防止在javascript中的内存泄漏

我陷入内存泄漏在JS问题。 使用Javascript: var index = 0; function leak() { console.log(index); index++; setTimeout(leak, 0); } leak(); 这里是我的testing代码,我使用instruments.app来检测它的内存使用情况,并且内存的上升速度非常快。 我怀疑似乎没有变数占据记忆。 为什么? 任何想法都很感激。

debugging节点js垃圾收集/内存问题与铬

我试图find一些内存泄漏的根本问题,我有一个节点的应用程序(V 0.8.6)。 为了帮助解决这个问题,我使用https://github.com/c4milo/node-webkit-agent 。 由于应用程序很大,我在一个testing平台中隔离了这个问题,以限制大型应用程序中的噪声量。 我们运行testing,然后将Chrome代理程序附加到该进程。 该物体似乎应该被清理,因为没有任何保持path缠绕在任何根物体上。 我的理解是如何保留path有缺陷,有什么我失踪? 我已经上传了一个debugging会话的下面的屏幕截图,显示了我认为应该GC'd的对象以及保留path,这些path并不会返回到任何GC根对象。