nodejs setTimeout内存泄漏?

cra*_*aft 10 memory node.js

v0.10.4

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

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

redx();
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ??

编辑

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

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

Tom*_*gli 4

不知道为什么,但显然如果您在函数范围内引用超时对象,nodejs 将正确执行垃圾收集。

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

redx();
Run Code Online (Sandbox Code Playgroud)