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
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
解决方案 »
- java GUI 设计中,会不会有不同的类对同一个问题进行不同限制或设置?这些不同的设置会不会引起冲突?
- 如何用 JSpinner 做日历
- java简单的小疑问,请求帮忙!
- 哪位用過 jgraph,有沒有生成一個帶多個端點的線段(也就是折線)的代碼例子
- 高人请进:请问Graphics和Graphics2D类中的abstract方法最终是由哪些类实现的?
- 小弟初学Java,一个程序运行有错,请大家帮我看看。
- 初学JAVA,问一个程序的做法。
- jBuilder的包引入问题.....参与有分..
- 关于jLabel显示icon的奇怪问题?!
- java中如何做缩略图
- 请教classloader的问题
- 有关使用JTextArea类中方法的问题,简单!解决后马上给分结贴!
java版的大师们都这么不屑啊!
下午看看再决定什么......
我的运行结果:(和你的不一样)
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不知道你要什么样的结果?
这说的很清楚了,是你们自己看不明白吧,to angle097113(深思不解) :
这样的态度,叫人如何帮你?明明是自己没有把问题说清楚.你就说了"学习java中,请教为什么是这样的结果呢?".你要什么的结果?你希望输出什么结果?你根本没说,别人怎么知道你所说的这样的结果是哪里不符合你的要求?你至少也要加点描述,说明一下你的问题所在,别人才好忙了解你的问题,才能及时的回答你的问题,你就这样贴出一块代码,别人哪有时间去看啊,要别人去分析每行代码,然后猜测你所要的结果是什么?问问题也是有学问的,而且,你是在寻人帮助,你这样的态度是不行的,说别人"乱说","没看清楚".希望你能改正你的态度问题.也希望别的朋友也要注意.
你是不是没事干啊?