看看这个行啊?
package reference;
import java.lang.ref.*;
import java.util.*;class verybig{
static final int sz=10000;
double[] d=new double[sz];
String ident;public verybig(String id){
ident=id;
}public String toString(){
return ident;
}public void finalize(){
System.out.println("Finalize"+ident);}
}public class reference { static ReferenceQueue rq= new ReferenceQueue(); public static void checkqueue()
{
Object inq=rq.poll();
if(inq!=null)
System.out.println("in queue:"+ ((Reference)inq).get());
}
public static void main(String[] args) {
int size=10;
if(args.length>0)
size=Integer.parseInt(args[0]);
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 creat: "+sa[i].get());
checkqueue();
}
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 creat: "+ wa[i].get());
checkqueue();
}
SoftReference s= new SoftReference(new verybig("soft"));
WeakReference w= new WeakReference(new verybig("weak"));
System.gc();
PhantomReference[] pa= new PhantomReference[size];
for(int i=0;i<pa.length;i++){
pa[i]= new PhantomReference(new verybig("phant " +i),rq);
System.out.println("just creat: "+(verybig)pa[i].get());
checkqueue();
}
}
}
package reference;
import java.lang.ref.*;
import java.util.*;class verybig{
static final int sz=10000;
double[] d=new double[sz];
String ident;public verybig(String id){
ident=id;
}public String toString(){
return ident;
}public void finalize(){
System.out.println("Finalize"+ident);}
}public class reference { static ReferenceQueue rq= new ReferenceQueue(); public static void checkqueue()
{
Object inq=rq.poll();
if(inq!=null)
System.out.println("in queue:"+ ((Reference)inq).get());
}
public static void main(String[] args) {
int size=10;
if(args.length>0)
size=Integer.parseInt(args[0]);
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 creat: "+sa[i].get());
checkqueue();
}
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 creat: "+ wa[i].get());
checkqueue();
}
SoftReference s= new SoftReference(new verybig("soft"));
WeakReference w= new WeakReference(new verybig("weak"));
System.gc();
PhantomReference[] pa= new PhantomReference[size];
for(int i=0;i<pa.length;i++){
pa[i]= new PhantomReference(new verybig("phant " +i),rq);
System.out.println("just creat: "+(verybig)pa[i].get());
checkqueue();
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货