I have a question to spare, which arouses me by ages: how does the JVM
elegits circularly-referenced objects for garbage collection?
Let me explain it better. Having 2 classes:
public class A {
B b;
}
public class B {
A a;
}
and instantiating them in such a way to have the A instance refer to the B
one via its b field, and the B instance refer the A one via its a field,
when there isn't anymore other references to the instance of A and the
instance of B apart their own circular references, how can the JVM GC
understand that they may be both garbage-collected.
Or instead they are simply not recollected and the various WeakReference
versions are there exactly to avoid non-recollectable circular references?
Regards,
Giampaolo