javascript - nodejs 内存泄露问题?
伊谢尔伦
伊谢尔伦 2017-04-11 12:13:26
0
1
265

`

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的引用也就不存在了,那么怎么会引起内存泄露呢?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!