Sobes.tech
Junior — Middle

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

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

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

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

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