ホームページ  >  に質問  >  本文

javascript - nodejs 内存泄露问题?

`

var theThing = null
var replaceThing = function () {
    var originalThing = theThing
    var unused = function () {
        if (originalThing)
        console.log("hi")
     }
    theThing = {
        longStr: new Array(1000000).join('*'),
        someMethod: function () {
          console.log('someMessage')
        }
    };
};
setInterval(replaceThing, 1);`

描述问题:
这是nodejs中一个典型的垃圾回收案例,上面那段代码运行之后会带来非常明显的内存泄露情况,问题在于这段代码并没有形成闭包,为什么堆内的对象没有被立即释放?
原文中的一个解释是unused函数内部引用了originalThing,但是函数运行之后,申请的内存就会被释放,原本指向unused的函数的指针也就没有了,所以unused函数在堆中也应该会被回收,对originalThing的引用也就不存在了,那么怎么会引起内存泄露呢?

伊谢尔伦伊谢尔伦2721日前340

全員に返信(1)返信します

  • 迷茫

    迷茫2017-04-11 12:15:26

    这个不会引起内存泄漏呀,但是如果说内够搞跨nodejs还是有可能的。因为 1ms 毕竟很短

    返事
    0
  • キャンセル返事