2011-08-25 38 views
2

我想避免由於未刪除的監聽器導致的類加載器泄漏。爲了促進這一點,我認爲對聽者的弱或者軟引用會有所幫助。嚴格地說,我需要的唯一Collection方法是add()和iterator()。任何人都知道WeakReferenceCollection持有監聽器

是否有任何使用弱或軟引用的設置或列表的foss庫。

任何建議將不勝感激,否則我會寫我自己的。

回答

0

您實際上可以使用WeakHashSet來達到此目的。所有的值只需使用null

編輯 WeakHashSet的WeakHashMap和值的Boolean.TRUE。

0

有一個java.util.WeakHashMap。我不確定在JDK中List和Set是否並行,但使用WeakReferences編寫WeakList應該相當簡單。有一個示例實現WeakReferenceList

請注意,將偵聽器存儲爲WeakReferences可能非常危險,因爲許多人將偵聽器編碼爲匿名類,這些類可能很容易被觸摸到並且無法讀取。

+0

我正在使用處理程序模式,通過我爲每個添加的偵聽程序返回一個卸妝。卸妝者持有對其用於從收集中移除的聽衆的引用。使用這種方法的正確方法當然是保留並在卸下時調用卸妝。 –

0

用我們自己的WeakHashMap作爲存儲桶寫了一些微不足道的東西。

相關問題