Будет ли console.log предотвращать сбор мусора? - программирование
Подтвердить что ты не робот

Будет ли console.log предотвращать сбор мусора?

Если у меня есть объект, который обычно будет собираться с мусором, но был зарегистрирован на консоли, будет ли он по-прежнему иметь право на сбор мусора?

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

// Can o be collected?

Если да, есть ли какие-либо обстоятельства, при которых запись на консоль (с использованием любого из ее методов) может повлиять на право на сбор мусора?

Изменить: я не верю, что это повлияет на право на сбор, основанный на просмотре кучи в инструментах Chrome dev. Но будут ли какие-либо категории записи на консоль?

4b9b3361

Ответ 1

Если вы регистрируете объект на консоли, сбор мусора не может быть.

Вы можете проверить это, введя консоль хром:

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

Перейдите в раздел "Профили" и "Снимок кучи". Это автоматически сделает сборку мусора. Найдите класс "Foo". В столбце "Количество объектов" будет 1.