Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

node内存释放

$
0
0

最近刚开始研究垃圾回收,在试着回答饿了么大前端里的node内存释放相关的问题时,遇到了一些疑问:

let arr = [];
while(true)
  arr.push(1);

无限增加的数组,这肯定是会爆掉内存的。

let arr = [];
while(true)
  arr.push();

这个我觉得只是一直使用 arr,导致 arr不能被释放吧?

let arr = [];
while(true)
  arr.push(new Buffer(1000));

这个是因为 Buffer的大小小于8k,会先检查内存池是否已满,所以应该不会爆掉内存?

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, 1000)

这个是因为 unusedoriginalThing进行了引用,所以每一个 unused都形成了一个 originalThing的作用域 replaceThing的闭包,这个闭包不会被回收掉,所以会在内存中一直累积?

因为自己不是很确定,所以麻烦懂的小伙伴回答一下,谢谢!


Viewing all articles
Browse latest Browse all 14821

Trending Articles