12、尝试强制垃圾回收。并测试结果。
有两种方式强制垃圾回收
System.gc();
System.runFinalization();
另一种
Runtime.getRuntime().gc();
Runtime.getRuntime().runFinalization();
然后各种引用的get()方法返回的都是Object对象,要强制类型转换,才能正常使用。
最后如果One one = (One)wr.get();这样子算是又给这个对象连接了一个强引用。可以在用完后,将one=null。
import java.lang.ref.*;
public class ReferenceTest
{
public static void main(String[] args)
{
One one = new One();
WeakReference wr = new WeakReference(one);
one = null;
One one2 = (One)wr.get();
one2.run();
one2 = null;
Runtime.getRuntime().gc();
Runtime.getRuntime().runFinalization();
one2 = (One)wr.get();
one2.result();
}
}
class One
{
public void run()
{
System.out.println("但是,我是不会放弃的,我会继续跑下去,哪怕到了最后一刻!");
}
public void result()
{
System.out.println("我活了下来,但是你却死亡了!我不明白命运。");
}
}