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