如果我有一个通常会被垃圾收集但已被记录到控制台的对象,它是否仍有资格进行垃圾回收?
(function(){
var o = { foo: {} };
console.log(o);
}())
// Can o be collected?
如果是,是否有任何情况下写入控制台(使用其任何方法)会影响垃圾收集的资格?
编辑:我不相信它会影响基于在Chrome开发工具中观看堆的收集资格。但是,任何类型的写入控制台都会这样做吗?
答案 0 :(得分:4)
如果您将对象记录到控制台,则无法进行垃圾回收。
您可以通过输入chrome控制台来验证这一点:
var Foo = function() {};
console.log(new Foo());
转到“个人资料”和“抓取快照”。这将自动进行垃圾收集。搜索课程“Foo”。 “对象计数”列中将有1
。