import java.lang.ref.*;class VeryBig {
    private static final int SZ = 10000;    private double[] d = new double[SZ];    private String ident;    public VeryBig(String id) {
        ident = id;
    }    public String toString() {
        return ident;
    }    public void finalize() {
        System.out.println("Finalizing " + ident);
    }
}public class References {
    private static ReferenceQueue rq = new ReferenceQueue();    public static void checkQueue(String ss) {
        Object inq = rq.poll();
        if (inq != null)
            System.out.println("In " + ss + " queue: " + (VeryBig) ((Reference) inq).get());
    }    public static void main(String[] args) {
        int size = 10;
        if (args.length > 0) {
            size = Integer.parseInt(args[0]);
        }
        
System.out.println("Soft-------");
SoftReference[] sa = new SoftReference[size];
        for (int i = 0; i < sa.length; i++) {
            sa[i] = new SoftReference(new VeryBig("Soft" + i), rq);
            System.out.println("Just Soft Createed: " + (VeryBig) sa[i].get());
            checkQueue("Soft");
        }
        
System.out.println("Weak-------");
        WeakReference[] wa = new WeakReference[size];
        for (int i = 0; i < wa.length; i++) {
            wa[i] = new WeakReference(new VeryBig("Weak" + i), rq);
            System.out.println("Just Weak Createed: " + (VeryBig) wa[i].get());
            checkQueue("Weak");
        }  System.out.println("Phantom-------");        
        PhantomReference[] pa = new PhantomReference[size];
        for (int i = 0; i < pa.length; i++) {
            pa[i] = new PhantomReference(new VeryBig("Phantom" + i), rq);
            System.out.println("Just  Phantom Createed: " + (VeryBig) pa[i].get());
            checkQueue("Phantom");
        }  SoftReference s = new SoftReference(new VeryBig("Soft"));
        WeakReference w = new WeakReference(new VeryBig("Weak"));
System.out.println("Cabage Collection");
        System.gc();    }
    }
C:\>java References 5
Soft-------
Just Soft Createed: Soft0
Just Soft Createed: Soft1
Just Soft Createed: Soft2
Just Soft Createed: Soft3
Just Soft Createed: Soft4
Weak-------
Just Weak Createed: Weak0
Just Weak Createed: Weak1
Just Weak Createed: Weak2
Just Weak Createed: Weak3
Just Weak Createed: Weak4
Phantom-------
Finalizing Weak0
Finalizing Weak1
Finalizing Weak2
Finalizing Weak3
Finalizing Weak4
Just  Phantom Createed: null
In Phantom queue: null
Just  Phantom Createed: null
In Phantom queue: null
Just  Phantom Createed: null
In Phantom queue: null
Just  Phantom Createed: null
In Phantom queue: null
Just  Phantom Createed: null
In Phantom queue: null
Finalizing Phantom3
Finalizing Phantom2
Finalizing Phantom4
Finalizing Phantom1
Finalizing Phantom0
Cabage Collection
Finalizing Weak

解决方案 »

  1.   

    这么长时间都没有人回答
    java版的大师们都这么不屑啊!
    下午看看再决定什么......
      

  2.   

    贴出一堆代码就让人看,哪个会看啊?!
    我的运行结果:(和你的不一样)
    Soft-------
    Just Soft Createed: Soft0
    Just Soft Createed: Soft1
    Just Soft Createed: Soft2
    Just Soft Createed: Soft3
    Just Soft Createed: Soft4
    Just Soft Createed: Soft5
    Just Soft Createed: Soft6
    Just Soft Createed: Soft7
    Just Soft Createed: Soft8
    Just Soft Createed: Soft9
    Weak-------
    Just Weak Createed: Weak0
    Just Weak Createed: Weak1
    Just Weak Createed: Weak2
    Just Weak Createed: Weak3
    Just Weak Createed: Weak4
    Just Weak Createed: Weak5
    Just Weak Createed: Weak6
    Just Weak Createed: Weak7
    Just Weak Createed: Weak8
    Just Weak Createed: Weak9
    Phantom-------
    Finalizing Weak7
    Finalizing Weak8
    Finalizing Weak9
    Finalizing Weak0
    Finalizing Weak1
    Finalizing Weak2
    Finalizing Weak3
    Finalizing Weak4
    Finalizing Weak5
    Finalizing Weak6
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Just  Phantom Createed: null
    In Phantom queue: null
    Cabage Collection
    Finalizing Soft0
    Finalizing Soft1
    Finalizing Soft2
    Finalizing Soft3
    Finalizing Soft4
    Finalizing Soft5
    Finalizing Soft6
    Finalizing Soft7
    Finalizing Soft8
    Finalizing Soft9
    Finalizing Phantom0
    Finalizing Phantom1
    Finalizing Phantom2
    Finalizing Phantom3
    Finalizing Phantom4
    Finalizing Phantom5
    Finalizing Phantom6
    Finalizing Phantom7
    Finalizing Phantom8
    Finalizing Phantom9
    Finalizing Weak不知道你要什么样的结果?
      

  3.   

    回复人: angle097113(深思不解) ( ) 信誉:100  2005-08-25 14:06:00 我想麻烦二位你们仔细看了没有啊,就乱说“什么问题啊,说清楚啊,”
    这说的很清楚了,是你们自己看不明白吧,to angle097113(深思不解) :
    这样的态度,叫人如何帮你?明明是自己没有把问题说清楚.你就说了"学习java中,请教为什么是这样的结果呢?".你要什么的结果?你希望输出什么结果?你根本没说,别人怎么知道你所说的这样的结果是哪里不符合你的要求?你至少也要加点描述,说明一下你的问题所在,别人才好忙了解你的问题,才能及时的回答你的问题,你就这样贴出一块代码,别人哪有时间去看啊,要别人去分析每行代码,然后猜测你所要的结果是什么?问问题也是有学问的,而且,你是在寻人帮助,你这样的态度是不行的,说别人"乱说","没看清楚".希望你能改正你的态度问题.也希望别的朋友也要注意.
      

  4.   

    varkychan(kevinchan)说的有理!!
      

  5.   

    说的还有道理,ABCatai(ABCatai) 
    你是不是没事干啊?