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。 */ } }