【发布时间】:2018-10-25 12:01:04
【问题描述】:
我有一个使用太多内存的 NodeJS 应用程序。我们正在尝试追踪问题的根源。
所以我读到闭包不利于内存使用。垃圾收集器很难释放闭包使用的内存。
我们的代码有很多部分都使用了这样的 Promise:
thenableFunction().then(() => {...}).then(() => {...}).catch(() => {...});
所以在阅读了关于闭包的内容后,我想将所有内容重构为
try{
let result = await thenableFunction();
...
}catch(e){...}
我现在想知道我们是否会从这种重构中受益,或者它毕竟没有任何区别。
你怎么看?你知道有什么好的链接可以解释这一点吗?
谢谢
【问题讨论】:
-
我认为这不会影响内存使用。
-
我有什么found
-
"我读到闭包不利于内存使用。" - 你从哪里读到的?!
-
我会让他为自己说话,但是有一些报告的案例是有些模糊的重复/递归关闭模式可能会导致内存泄漏。 (请参阅下面我的答案中的链接)。
-
@Doug 我希望你没有计算 IE6 案例(RIP!)。而关于 Meteor 案例,这是一个与哑 GC 一起玩的非常模糊的边缘案例。但是我们不能从这个例子中概括出“闭包是不好的”。否则,每个数据结构都不利于内存使用!链接列表很糟糕!说真的,可以用(更不显眼的)
async/await代码重现这种情况。
标签: node.js memory-leaks promise async-await