Avatar ·

¿Cuál es la diferencia entre SoftReference y WeakReference en Java?

¡Hola, colegas! Soy un desarrollador Java principiante y no puedo entender los tipos de referencias en Java. Sé que hay Strong Reference (referencia normal), así como SoftReference y WeakReference. En la práctica, entiendo que SoftReference se usa para caching, y WeakReference para WeakHashMap o para prevenir memory leaks, pero no me queda clara la frontera entre ellos. Supongamos que tengo este código: ```java import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; public class ReferenceTest { public static void main(String[] args) { Object strongObj = new Object(); SoftReference softRef = new SoftReference<>(strongObj); WeakReference weakRef = new WeakReference<>(strongObj); strongObj = null; // ahora strongObj puede ser recolectado por GC System.gc(); // pedimos a GC que trabaje System.out.println("Soft: " + softRef.get()); System.out.println("Weak: " + weakRef