gpt4 book ai didi

node.js - nodejs setTimeout内存泄漏?

转载 作者:IT老高 更新时间:2023-10-28 23:21:14 24 4
gpt4 key购买 nike

v0.10.4

这是导致内存使用量不断增加的简单循环:

function redx(){
setTimeout(function(){ redx() },1000);
console.log('loop');
}

redx();

我做错了什么??

编辑

好的,刚刚尝试了在范围内引用超时对象的建议,似乎垃圾收集确实在大约 40 秒后启动,这是来自 TOP 的缩写日志:

3941 根 20 0 32944 7284 4084 S 4.587 3.406 0:01.32 Node
3941 根 20 0 32944 7460 4084 S 2.948 3.489 0:01.59 Node
3941 根 20 0 32944 7516 4084 S 2.948 3.515 0:01.68 Node
3941 根 20 0 33968 8400 4112 S 2.948 3.928 0:02.15 Node
3941 根 20 0 33968 8920 4112 S 3.275 4.171 0:02.98 Node
3941 根 20 0 33968 8964 4112 S 2.948 4.192 0:03.07 Node
3941 根 20 0 33968 9212 4112 S 2.953 4.308 0:03.16 Node
3941 根 20 0 33968 9212 4112 S 2.953 4.308 0:03.25 Node
3941 根 20 0 33968 9212 4112 S 3.276 4.308 0:03.35 Node
3941 根 20 0 33968 9212 4112 S 2.950 4.308 0:03.44 Node

最佳答案

不知道为什么,但显然如果你在函数 nodejs 的范围内引用超时对象,就会正确地进行垃圾收集。

function redx(){
var t = setTimeout(function(){ redx() },50);
console.log('hi');
}

redx();

关于node.js - nodejs setTimeout内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16072699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com