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:
-
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.
-
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
-
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
-
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