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
调用垃圾返回。
答案 0 :(得分:2)
在这种特殊情况下,request
永远不会被垃圾回收,因为您还没有从response
读取任何数据,而且回复对response.req
有request
个引用
然而,在这种情况下:
var http = require('http');
function createRequest() {
var options = {};
var request = http.request(options, function(response) {
response.resume()
});
request.end();
}
createRequest();
在响应发出request
事件后, end
将最终被垃圾收集。