ReferenceExample.java |
import java.lang.ref.*; public class ReferenceExample { public static void main(String[] args) { Point p = new Point(2,4); ReferenceQueue queue = new ReferenceQueue(); Reference ref = new WeakReference(p,queue); p = null; /* On suppose ici que le ramasse-miettes n'est pas passé et, en particulier, qu'il n'a pas collecté l'espace associé à p. */ System.out.println(ref.get()); // Affiche: (2,4) System.out.println(ref.isEnqueued()); // Affiche: false System.gc(); /* On suppose qu'après le déclenchement du ramasse-miettes, ce dernier a récupéré l'espace mémoire associé à p. */ Reference ref2 = queue.poll(); System.out.println(ref2);// Affiche:java.lang.ref.WeakReference@df6ccd System.out.println(ref == ref2); // Affiche: true System.out.println(ref2.get()); // Affiche: null } }