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    
  }
}