Sobes.tech
Junior — Middle

Pode explicar o que é uma referência fraca no contexto do gerenciamento de memória em Java?

sobes.tech IA

Resposta da IA

A referência suave (SoftReference) em Java é um tipo de referência que permite que um objeto seja recolhido pelo coletor de lixo se o sistema estiver com pouca memória, mas enquanto houver memória suficiente, o objeto é mantido.

Isto é útil para caching: objetos com referências suaves não são removidos imediatamente, apenas quando é necessário liberar memória.

Exemplo de uso de referência suave:

import java.lang.ref.SoftReference;

public class SoftReferenceExample {
    public static void main(String[] args) {
        Object strongRef = new Object();
        SoftReference<Object> softRef = new SoftReference<>(strongRef);

        strongRef = null; // agora o objeto está acessível apenas através da referência suave

        Object obj = softRef.get();
        if (obj != null) {
            System.out.println("Objeto acessível");
        } else {
            System.out.println("Objeto já foi recolhido pelo coletor de lixo");
        }
    }
}