Junior — Middle
Explique o que é uma referência fraca e como ela difere de uma referência forte na gestão de memória.
sobes.tech IA
Resposta da IA
Uma referência forte (strong reference) é uma referência normal a um objeto em Java. Enquanto existir pelo menos uma referência forte a um objeto, o coletor de lixo não removerá esse objeto da memória.
Uma referência fraca (weak reference) é uma referência que não impede o coletor de lixo de remover o objeto. Se um objeto estiver acessível apenas através de referências fracas, ele é considerado um candidato à coleta de lixo.
Um exemplo de uso de referências fracas é o cache, onde objetos podem ser removidos em caso de falta de memória, para não mantê-los na memória constantemente.
Exemplo de código:
import java.lang.ref.WeakReference;
public class WeakReferenceExample {
public static void main(String[] args) {
Object strong = new Object();
WeakReference<Object> weak = new WeakReference<>(strong);
System.out.println("Antes de nullificar strong: " + weak.get()); // objeto acessível
strong = null; // agora o objeto só é acessível através da referência fraca
System.gc(); // tentativa de invocar o coletor de lixo
System.out.println("Depois de GC: " + weak.get()); // pode ser null se o objeto foi coletado
}
}