Будет ли console.log предотвращать сбор мусора?
Если у меня есть объект, который обычно будет собираться с мусором, но был зарегистрирован на консоли, будет ли он по-прежнему иметь право на сбор мусора?
(function(){
var o = { foo: {} };
console.log(o);
}())
// Can o be collected?
Если да, есть ли какие-либо обстоятельства, при которых запись на консоль (с использованием любого из ее методов) может повлиять на право на сбор мусора?
Изменить: я не верю, что это повлияет на право на сбор, основанный на просмотре кучи в инструментах Chrome dev. Но будут ли какие-либо категории записи на консоль?
Ответы
Ответ 1
Если вы регистрируете объект на консоли, сбор мусора не может быть.
Вы можете проверить это, введя консоль хром:
var Foo = function() {};
console.log(new Foo());
Перейдите в раздел "Профили" и "Снимок кучи". Это автоматически сделает сборку мусора. Найдите класс "Foo". В столбце "Количество объектов" будет 1
.