找了相关文章,也看了API说明,还不是很明白,大家能详细通俗的讲讲吗,可用分多了,不够再加,并散分提前庆祝中秋,勿忘国耻

解决方案 »

  1.   

    去看一下深入java虚拟机,里面讲的很好!还有图解.Reference类包含了三个直接的子类: SofetReference,WeakReference,PhantomReference它们分别封装了对象引用目标的"软引用","弱引用","影子引用".软引用使你可以创建内存中的缓存,它与程序中的整体内存需求有关.弱引用使你可以创建规范映射,比如哈希表,它的关键字和值在没有其他程序部分的引用时可以从映射中清除.影子引用使你可以使现除终结方法之外的更复杂的临终清理政策!thinking in java里面也有讲,你也可以去看一下. 在第11章,对象的集合!11.10节.http://www.wgqqh.com/shhgs/tij.html
      

  2.   

    我理解的,是不是如果一个对象,它需要的内存很大,而且不断变化,它可能引起OutofMemory异常的时候,就把这个对象的一个reference指向Reference的一个子类,用这个子类来分配内存?
      

  3.   

    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回收了