console.log将阻止垃圾收集

Will console.log prevent garbage collection?

本文关键字:log console      更新时间:2023-09-26

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

(function(){
  var o = { foo: {} }; 
  console.log(o);
}())
// Can o be collected?

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

编辑:根据Chrome开发工具中的堆,我不认为这会影响收集的资格。但是,任何一种类型的对控制台的写入都会这样做吗

如果将对象记录到控制台,则不能对其进行垃圾收集。

您可以通过在chrome控制台中输入以下内容来验证:

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

转到"配置文件"answers"获取堆快照"。这将自动进行垃圾收集。搜索类"Foo"。在"对象计数"列中将有一个1