去看一下深入java虚拟机,里面讲的很好!还有图解.Reference类包含了三个直接的子类: SofetReference,WeakReference,PhantomReference它们分别封装了对象引用目标的"软引用","弱引用","影子引用".软引用使你可以创建内存中的缓存,它与程序中的整体内存需求有关.弱引用使你可以创建规范映射,比如哈希表,它的关键字和值在没有其他程序部分的引用时可以从映射中清除.影子引用使你可以使现除终结方法之外的更复杂的临终清理政策!thinking in java里面也有讲,你也可以去看一下. 在第11章,对象的集合!11.10节.http://www.wgqqh.com/shhgs/tij.html
Reference以及它的子类为开发者参与JVM的垃圾回收提供了方法,把一个对象用softReference封装后,JVM并不会在该对象不再引用时就立刻回收它,而是当没有足够内存的时候才回收它,它通常用于创建内存中的cache, WeakReference 弱引用使你可以创建规范映射,比如哈希表,它的关键字和值在没有其他程序部分的引用时可以从映射中清除,至于影子引用(PhantomReference)不是太常用,可以参考一下其他资料。String a = new String("test"); SoftReference ref = new SoftReference(a); System.gc(); String b = (String)ref.get();b.equals(a)依然为true, 证明Reference确实保护了对象被Garbage collection回收了
SoftReference ref = new SoftReference(a);
System.gc();
String b = (String)ref.get();b.equals(a)依然为true, 证明Reference确实保护了对象被Garbage collection回收了