Sobes.tech
Junior — Middle

Podes listar os tipos de referências existentes em Java e suas características?

sobes.tech IA

Resposta da IA

Em Java, existem os seguintes tipos de referências que afetam a recolha de lixo e a gestão de memória:

  1. Referência Forte (Strong Reference)

    • Referência comum que usamos por padrão.
    • Um objeto com uma referência forte não será eliminado pelo coletor de lixo.
  2. Referência Suave (Soft Reference)

    • Usada para cache.
    • Objetos com referências suaves são eliminados apenas quando há falta de memória.
    • Classe: java.lang.ref.SoftReference
  3. Referência Fraca (Weak Reference)

    • Objetos com referências fracas são eliminados no próximo ciclo de coleta de lixo se não houver referências fortes.
    • Usada para implementar caches fracas.
    • Classe: java.lang.ref.WeakReference
  4. Referência Fantasma (Phantom Reference)

    • Usada para rastrear o momento em que um objeto está pronto para ser eliminado.
    • Não permite obter o objeto através do método get() (retorna null).
    • Aplicada para um controlo mais fino da limpeza de recursos.
    • Classe: java.lang.ref.PhantomReference

Exemplo de criação de uma referência fraca:

import java.lang.ref.WeakReference;

String forte = new String("Hello");
WeakReference<String> fraca = new WeakReference<>(forte);

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

String valor = fraca.get(); // pode retornar null se o objeto já tiver sido recolhido