Sobes.tech
Junior — Middle

¿Puedes enumerar los tipos de referencias que existen en Java y sus características?

sobes.tech AI

Respuesta de la IA

En Java, existen los siguientes tipos de referencias que afectan la recolección de basura y la gestión de memoria:

  1. Referencia Fuerte (Strong Reference)

    • La referencia habitual que usamos por defecto.
    • Un objeto con una referencia fuerte no será eliminado por el recolector de basura.
  2. Referencia Suave (Soft Reference)

    • Se usa para caché.
    • Los objetos con referencias suaves solo se eliminan cuando hay falta de memoria.
    • Clase: java.lang.ref.SoftReference
  3. Referencia Débil (Weak Reference)

    • Los objetos con referencias débiles se eliminan en el siguiente ciclo de recolección de basura si no hay referencias fuertes.
    • Se usa para implementar cachés débiles.
    • Clase: java.lang.ref.WeakReference
  4. Referencia Fantasma (Phantom Reference)

    • Se usa para rastrear el momento en que un objeto está listo para ser eliminado.
    • No permite obtener el objeto mediante el método get() (devuelve null).
    • Se aplica para un control más fino de la limpieza de recursos.
    • Clase: java.lang.ref.PhantomReference

Ejemplo de creación de una referencia débil:

import java.lang.ref.WeakReference;

String fuerte = new String("Hello");
WeakReference<String> debil = new WeakReference<>(fuerte);

fuerte = null; // ahora el objeto solo está accesible a través de la referencia débil

String valor = debil.get(); // puede devolver null si el objeto ya ha sido recolectado