Can someone explain the difference between the three Reference classes (or post a link to a nice explanation)? SoftReference
> WeakReference
> PhantomReference
, but when would I use each one? Why is there a WeakHashMap
but no SoftHashMap
or PhantomHashMap
?
And if I use the following code...
WeakReference<String> ref = new WeakReference<String>("Hello!");
if (ref != null) { // ref can get collected at any time...
System.gc(); // Let's assume ref gets collected here.
System.out.println(ref.get()); // Now what?!
}
...what happens? Do I have to check if ref
is null before every statement (this is wrong, but what should I do)? Sorry for the rapid-fire questions, but I'm having trouble understanding these Reference
classes... Thanks!