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