Is this java Object eligible for garbage collection in List
The Boss
objects will not be collected by the GarbageCollector
because they are still referenced in the code block that you are posted. bossList
is an ArrayList
which has an internal array of Object
thus holding references to those objects which are added to it.
I such a situation not only the references by you are considered but all referneces in all objects involved.
EDIT: Since you are returning the List in your code the objects will not be marked for garbage collection until the list is no longer referenced in your program.
ArrayList has Object[] elementData
internally. When you added b
to bossList
ArrayList assigned elementData[0] = b
. So when you assigned null
to b
the instance of Boss
is still referenced from elementData[0]
and cannot be GCed. But since ArrayList
instance is referenced only from method's variable after the method returns both ArrayList
and Boss
instances will be eligible for GC.
Here's what really happens with your code :