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/