Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        ReferenceQueue referenceQueue = new ReferenceQueue();
        Object object = new Object() {
            public String toString() {
                return "Referenced Object";
            }
        };

        Object data = new Object() {
            public String toString() {
                return "Data";
            }
        };

        HashMap map = new HashMap();
        Reference reference = null;
        System.out.println("Testing PhantomReference.");
        reference = new PhantomReference(object, referenceQueue);

        map.put(reference, data);

        System.out.println(reference.get());
        System.out.println(map.get(reference));
        System.out.println(reference.isEnqueued());

        System.gc();
        System.out.println(reference.get());
        System.out.println(map.get(reference));
        System.out.println(reference.isEnqueued());

        object = null;
        data = null;

        System.gc();
        System.out.println(reference.get());
        System.out.println(map.get(reference));
        System.out.println(reference.isEnqueued());
    }
}