Express.js中通过req挂载的变量何时被销毁?
Express中req挂载变量的销毁时机
- 挂载在
req对象上的自定义变量(比如req.foo = bar),生命周期和当前HTTP请求的响应周期完全绑定:当本次请求的响应完全发送给客户端后,req对象会被标记为可回收,其上的变量也会随req对象被Node.js的垃圾回收机制清理。 - 具体触发节点:当你调用
res.end()、res.send()等结束响应的方法后,请求响应周期正式结束。此时只要req对象没有被其他长期存在的代码引用,垃圾回收器就会在合适时机回收该对象,同时销毁所有挂载的自定义变量。 - 特殊情况:如果代码中存在未释放的
req引用(比如将req缓存到全局变量、长期存活的闭包或数据库连接中),req对象及挂载变量会一直存在,直到这些引用被移除,才会被垃圾回收。
内容的提问来源于stack exchange,提问作者Anson Ng
相关产品推荐
相关产品推荐

