If I have an object that would normally be garbage collected, but has been logged to the console, will it still be eligible for garbage collection?
(function(){
var o = { foo: {} };
console.log(o);
}())
// Can o be collected?
If yes, are there any circumstances where writing to the console (using any of its methods) can affect eligibility for garbage collection?
Edit: I dont believe it will affect eligibility for collection based on watching the heap in Chrome dev tools. But will any category of writing to the console do so?
If I have an object that would normally be garbage collected, but has been logged to the console, will it still be eligible for garbage collection?
(function(){
var o = { foo: {} };
console.log(o);
}())
// Can o be collected?
If yes, are there any circumstances where writing to the console (using any of its methods) can affect eligibility for garbage collection?
Edit: I dont believe it will affect eligibility for collection based on watching the heap in Chrome dev tools. But will any category of writing to the console do so?
Share edited Mar 3, 2015 at 19:07 Ben Aston asked Mar 3, 2015 at 18:50 Ben AstonBen Aston 55.8k69 gold badges220 silver badges349 bronze badges 2- 5 Chrome sometimes adds a note to logged objects, something like "evaluated upon first expansion". This suggests that the object might have been GCd in the meantime. But it could also just refer to modifications. – Thomas Commented Mar 3, 2015 at 18:52
- @Thomas I'm pretty sure it's referring to modifications. – Scimonster Commented Mar 3, 2015 at 18:56
1 Answer
Reset to default 6If you log an object to the console it can not be garbage collected.
You can verify this by entering in the chrome console:
var Foo = function() {};
console.log(new Foo());
Go to “Profiles” and “Take Heap Snapshot”. This will do a garbage collection automatically. Search for class “Foo”. There will be a 1
in column “Objects count“.