1、弱引用可以讓您保持對對象的引用,同時允許GC在必要時釋放對象,回收記憶體。對于那些建立便宜但耗費大量記憶體的對象,即希望保持該對象,又要在應用程式需要時使用,同時希望GC必要時回收時,可以考慮使用弱引用。
2、弱引用在引用對象的同時仍然允許對該對象進行垃圾回收。
3、實際存在的是一個對象,可以當n個來使用
4、以下是msdn中的内容
公共語言運作庫“垃圾回收”機制回收配置設定給對象的無法通路的(即“不可到達的”)記憶體。如果對對象的所有引用變得無效(例如,将那些引用設定為空引用(Visual Basic 中為 Nothing)),則該對象成為不可到達的。
垃圾回收将調用對象的 Finalize 方法(即執行“終結”),如果存在這樣的方法并且訓示這樣做。終結完成後,如果以某種方式重新擷取并重用垃圾回收對象,則将發生不可預知的結果。
被直接或間接引用的對象是“可到達的”,不允許垃圾回收器回收它。對可到達的對象的引用稱為“強引用”。
“弱引用”也引用可到達的對象(稱為“目标”)。使用者通過将 Target 屬性的值賦給變量來擷取對目标的強引用。但是,如果沒有對目标的強引用,目标将變得符合垃圾回收條件,即使它仍然有弱引用。
在對象變為符合垃圾回收條件時的時間和它被回收的時間之間可能有一個延遲。如果使用者試圖在目标已被回收後檢索它,将隻會檢索到空引用。如果目标尚未被回收,則将檢索到有效的引用。
對象可以是已使用的(即“活着的”);變成未使用的并符合垃圾回收條件(即“死掉的”);然後再被使用(即“複活的”)。但是,如果在終結後通路複活的對象,将導緻不可預知的行為。
WeakReference 對象可以指定在終結之後是否保持對其目标的引用;即弱引用是否應跟蹤目标的複活。不跟蹤複活的弱引用稱為“短弱引用”,跟蹤複活的弱引用稱為“長弱引用”。
本文轉自Work Hard Work Smart部落格園部落格,原文連結:http://www.cnblogs.com/linlf03/archive/2011/05/04/2036360.html,如需轉載請自行聯系原作者