What I am asking might be a stupid question so please pardon me for that. So it goes like this :
List bossList = new ArrayList();
Bos
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.