console.log会阻止垃圾回收吗?

时间:2015-03-03 18:50:49

标签: javascript

如果我有一个通常会被垃圾收集但已被记录到控制台的对象,它是否仍有资格进行垃圾回收?

(function(){
  var o = { foo: {} }; 
  console.log(o);
}())

// Can o be collected?

如果是,是否有任何情况下写入控制台(使用其任何方法)会影响垃圾收集的资格?

编辑:我不相信它会影响基于在Chrome开发工具中观看堆的收集资格。但是,任何类型的写入控制台都会这样做吗?

1 个答案:

答案 0 :(得分:4)

如果您将对象记录到控制台,则无法进行垃圾回收。

您可以通过输入chrome控制台来验证这一点:

var Foo = function() {};
console.log(new Foo());

转到“个人资料”和“抓取快照”。这将自动进行垃圾收集。搜索课程“Foo”。 “对象计数”列中将有1