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

时间:2013-11-28 09:48:14

标签: 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的实例,存储在函数request内的局部变量createRequest中。

该代码段是更大的应用程序的一部分,可以对createRequest进行多次调用。我很困惑这些实例何时被Node.js中收集的http.request调用垃圾返回。

1 个答案:

答案 0 :(得分:2)

在这种特殊情况下,request永远不会被垃圾回收,因为您还没有从response读取任何数据,而且回复对response.reqrequest个引用

然而,在这种情况下:

var http = require('http');
function createRequest() {
    var options = {};
    var request = http.request(options, function(response) {
        response.resume()
    });
    request.end();
}
createRequest();
在响应发出request事件后,

end将最终被垃圾收集。