Sobes.tech
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
    }
}
Explique o que é uma referência fraca e como ela… - sobes.tech