Einen guten Artikel, warum man und wann man WeakReferences und SoftReferences in Java einsetzen sollte und wie der Garbage Collector sie behandelt, findet man in "diesem Artikel aus Ethan Nicholas's Blog":http://weblogs.java.net/blog/enicholas/archive/2006/05/understanding_w.html
Gerade für Caching-Zwecke ist der Einsatz sehr sinnvoll, wenn man Memory Leaks verhindern will.