Quelle est la différence entre les différents types de références en Java et comment influencent-elles la collecte des déchets?
sobes.tech IA
Réponse de l'IA
En Java, il existe différents types de références qui influencent le comportement du ramasse-miettes (Garbage Collector) :
-
Référence Forte (Strong Reference) — une référence normale à un objet. Tant qu'il existe des références fortes, l'objet ne sera pas supprimé par le ramasse-miettes.
-
Référence Douce (Soft Reference) — un objet avec une référence douce est supprimé uniquement en cas de manque de mémoire. Utilisée pour la mise en cache.
-
Référence Faible (Weak Reference) — un objet avec une référence faible peut être supprimé lors du prochain passage du ramasse-miettes, même s'il existe des références faibles.
-
Référence Fantôme (Phantom Reference) — utilisée pour suivre le moment où un objet est prêt à être supprimé, mais ne l'est pas encore. Permet d'effectuer des actions supplémentaires après la suppression de l'objet.
Exemple d'utilisation d'une référence faible :
import java.lang.ref.WeakReference;
public class WeakRefExample {
public static void main(String[] args) {
Object obj = new Object();
WeakReference<Object> weakRef = new WeakReference<>(obj);
obj = null; // Supprimer la référence forte
System.gc(); // Lancer le ramasse-miettes
if (weakRef.get() == null) {
System.out.println("Objet supprimé");
} else {
System.out.println("Objet encore accessible");
}
}
}
Ainsi, le choix du type de référence permet de contrôler la durée de vie des objets et l'efficacité de l'utilisation de la mémoire.