Node.js 请求内存泄漏

标签 node.js memory-leaks

给定以下代码片段:

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);

使用 Node 版本 0.10.17,此代码会泄漏。有什么想法吗?

最佳答案

我看到很多问题,人们会说“天哪,内存泄漏!”基于应用程序运行的前几分钟,无需等待查看进程是否达到上限或是否实际耗尽内存。 Node 只使用允许的内存。

请参阅以下粗略基准。我运行了您的代码(超时时间为 100),内存使用量迅速增加到 ~70 MB,但随后停止了。第一列是内存使用情况。

27368  0:00.36 node test.js
40644  0:00.82 node test.js
47468  0:01.21 node test.js
48192  0:01.40 node test.js
67952  0:02.39 node test.js
69448  0:03.29 node test.js # Increasing fast til around here
70016  0:04.46 node test.js
70624  0:07.43 node test.js
70944  0:10.59 node test.js
71612  0:13.63 node test.js
73120  0:16.83 node test.js
70864  0:18.17 node test.js # Look it's decreasing
67780  0:42.27 node test.js # Considerably later it's even lower!

我猜为什么会这样,因为垃圾收集很昂贵,但我不确定,如果有人有真正的解释和引用,我会很高兴。

关于Node.js 请求内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18427485/

相关文章:

node.js - 在 docker 容器中永远启动 Node 时出错

node.js - 随着时间的推移, Node 应用程序逐渐消耗内存

node.js - 集会 Node sdk返回错误: getaddrinfo ENOTFOUND

javascript - NodeJS 中的访问计数器

node.js - 发送消息时AWS SQS "ECONNREFUSED"

ios - 在 iOS 应用程序上运行泄漏会引发 "Cannot allocate mmap"错误

Android ViewRootImpl 上下文泄漏问题

java - 多次执行应用程序后内存不足

c - 双向链表释放内存 valgrind 错误

javascript - 这段js代码是如何泄漏内存的?