【问题标题】:node.js domain memory leaknode.js 域内存泄漏
【发布时间】:2019-05-25 01:32:21
【问题描述】:

我在我的 Express 应用程序中为每个传入请求附加一个新域,就像在 example in the node.js doc 中一样。

但是,我注意到我正在泄漏内存。当我在 Chrome 中执行heapdump 并对其进行检查时,我注意到应该立即丢弃的类实际上被旧域保留。

我应该做些什么来告诉 node.js 不要保留旧域?

【问题讨论】:

  • 域是一种事件发射器,通常至少有一个错误事件监听器。在请求/响应周期结束时,您需要移除该域实例的所有监听器以进行清理。

标签: node.js memory-leaks node.js-domains


【解决方案1】:

来自文档:

domain.exit()

exit 方法退出当前域,将其从域堆栈中弹出。每当执行将切换到不同异步调用链的上下文时,确保退出当前域很重要。对 exit 的调用界定了绑定到域的异步调用和 I/O 操作链的结束或中断。

如果有多个嵌套域绑定到当前执行上下文,exit 将退出嵌套在该域中的所有域。

调用 exit 只会改变活动域,不会改变域本身。进入和退出可以在单个域上调用任意次数。

如果调用exit的域已经被释放,exit将返回而不退出域。

【讨论】:

  • 我正在查看源代码,看来您应该删除域上的所有侦听器,以及调用d.exit()
猜你喜欢
  • 2012-03-11
  • 2016-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2015-11-04
相关资源
最近更新 更多