java强引用、弱引用、虚引用。

package frank;
import java.lang.*;
import java.lang.ref.*;

/**
 * 对象的软、弱、和虚引用
 * 强引用 StrongReference 最常用的一种引用,比如普通的对象和数组等。对象处于可达状态系统就不会回收。
软引用 SoftReference 当系统内存足够时它不会被回收,程序可以使用该对象。
弱引用 WeakReference 不管系统内存是否足够都会回收该对象。
虚引用 PhantomReference 类似于没有引用,单独使用没有太大的意义,主要用于跟踪对象被垃圾回收的状态。
*/
public class App
{
	public static void main(String[] args) throws Exception
	{
		/*
		 * 引用的用法		
 		*String str = new String("frank");//不能使用直接量,因为直接量会被放到常量池中。
		WeakReference wr = new WeakReference(str);//把一个引用对象添加到弱引用里面去
		str = null;
		System.out.println(wr.get());//获得里面的对象
		Runtime.getRuntime().gc();//清理
		System.runFinalization();//执行了终结方法,但是也没法变成可达状态
		System.out.println(wr.get());//结果 null
		*/
		/*
		 * 虚引用
		String str = new String("frank");//定义一个对象
		ReferenceQueue rq = new ReferenceQueue();//创建一个引用队列
		PhantomReference pr = new PhantomReference(str,rq);//创建一个虚引用
		str = null;//切断关联
		System.out.println(pr.get());//试着取出,输出Null,不能通过虚引用访问引用的对象
		Runtime.getRuntime().gc();//强制垃圾回收
		System.runFinalization();//强制执行终结器
		//垃圾回收后将被放入队列中。
		System.out.println(rq.poll() == pr);//获得最先进入的对象后跟当前pr进行比较 输出true。
		*/

	}
}

  

posted on 2013-09-14 16:10  wp456  阅读(216)  评论(0)    收藏  举报

导航