【问题标题】:node.js mongoose.js memory leak?node.js mongoose.js 内存泄漏?
【发布时间】:2014-01-20 12:27:55
【问题描述】:

我正在创建凉亭包搜索网站(一切都是开源的),但我碰壁了。我有一些内存泄漏(或者我想我有),老实说,我不知道它为什么会在那里。

您可以下载并自行运行,但简单的提示会对我有很大帮助。

我已将其范围缩小到此函数调用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 承诺。

多次运行此函数会在每次运行时创建 30mb 的内存,垃圾收集器不会清理该内存。另请注意,这是我的第一个“真正的”node.js 项目,因此我将非常感谢任何提示。

【问题讨论】:

  • 哦,你为什么只运行这个函数几次? :) 让我们运行更多次,您可能会看到垃圾收集器工作。
  • 我已经使用node --expose-gc main.js 运行了这个脚本,代码为:global.gc();没有帮助。还使用了github.com/lloyd/node-memwatch,似乎运行了gc,但之后没有清理内存(只有少量)。编辑:另外我发现它只是因为我的小型 vps 服务器杀死了进程,因为它没有足够的内存。

标签: node.js memory-leaks mongoose when-js


【解决方案1】:

对于任何有同样问题的人:

https://github.com/c4milo/node-webkit-agent

在进行了几次堆转储后,我发现对象被垃圾回收,而实际内存使用与它无关。我认为由于使用 mongo 和其他非 node.js 的东西,实际内存使用量更大。实际内存使用量也稳定在 ~300mb,堆转储在 ~35mb。

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 2015-11-04
    相关资源
    最近更新 更多