垃圾收集器何时释放“请求”对象?

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

上面是一个小的Node.js片段。 http.request的返回值是http.request的一个实例,存储在函数createRequest的本地variablesrequest

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

在这种情况下, request将永远不会被垃圾收集,因为您没有从response读取任何数据,并且响应具有对requestresponse.req引用。

但是,在这种情况下:

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

request将在响应发出end事件后最终被垃圾回收。