import java.lang.ref.PhantomReference; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; public class Main { public static void main(String[] argv) throws Exception { ReferenceQueue rq = new ReferenceQueue(); PhantomReference<String> pr = new PhantomReference<String>("object", rq); while (true) { Reference r = rq.remove(); if (r == pr) { // about to be reclaimed. r.clear(); } } } }