我将一个新域附加到 Express 应用程序中的每个传入请求,就像 example in the node.js doc 中一样.
但是,我注意到我正在泄漏内存。当我执行heapdump时并在 Chrome 中检查它,我注意到应该立即垃圾化的类实际上是由旧域保留的。
我应该做些什么来告诉node.js不要保留旧域名?
最佳答案
来自文档:
domain.exit()
exit 方法退出当前域,并将其从域堆栈中弹出。每当执行要切换到不同的异步调用链的上下文时,确保退出当前域非常重要。对 exit 的调用界定了绑定(bind)到域的异步调用和 I/O 操作链的结束或中断。
如果有多个嵌套域绑定(bind)到当前执行上下文,则 exit 将退出此域中嵌套的所有域。
调用 exit 仅更改事件域,而不会更改域本身。可以在单个域上调用任意次数的 Enter 和 exit。
如果调用 exit 的域已被释放,exit 将返回而不退出该域。
关于Node.js 域内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22631449/