node.js - 垃圾收集器什么时候释放 'request' 对象?

标签 node.js garbage-collection

var http = require('http');
function createRequest() {
    var options = {};
    var request = http.request(options, function(response) {});
    request.end();
}
createRequest();

上面是一个小的 Node.js 片段。 http.request的返回值是 http.ClientRequest 的实例并存储在函数 createRequest 内的局部变量 request 中。

该片段是一个更大的应用程序的一部分,该应用程序多次调用 createRequest。我对 http.request 调用在 Node.js 中收集的垃圾何时返回这些实例感到困惑。

最佳答案

在这种特殊情况下,request 永远不会被垃圾回收,因为您还没有从 response 中读取任何数据,并且 response 有一个 response.req 请求 的引用。

但是,在这种情况下:

var http = require('http');
function createRequest() {
    var options = {};
    var request = http.request(options, function(response) {
        response.resume()
    });
    request.end();
}
createRequest();

request 最终会在 response 发出 end 事件后被垃圾回收。

关于node.js - 垃圾收集器什么时候释放 'request' 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20262644/

相关文章:

java - java中分配的内存是否仍保留在下面的代码中

javascript - MongoDB 聚合 - 放松、分组和项目

node.js - 使用 for 循环和 pg​​-bluebird

javascript - 改进 webpack 图像/css 构建时间?

javascript - Node.js 支持 =>(箭头函数)

java - Java 中的急切垃圾收集

hadoop - 如何为Apache HiveServer2/MetaStore服务器/WebHCat服务器启用GC日志记录,同时防止日志文件覆盖和限制磁盘空间使用

java - 了解 JVM GC

javascript - 无法让 BBP 公式在 nodejs 中工作

c# - 从 C++ 到 C# : Never Return a Reference to a Local Object?