Java 有人知道用WeakReferenceCollection来吸引听众吗

Java 有人知道用WeakReferenceCollection来吸引听众吗,java,collections,Java,Collections,我希望避免由于未删除侦听器而导致类加载器泄漏。为了促进这一点,我相信弱或软引用听众会有所帮助。严格来说,我需要的唯一收集方法是add和iterator 是否有任何foss库的集合或列表使用弱引用或软引用 任何建议都将不胜感激,否则我将自己写。有一个java.util.WeakHashMap。我不确定是否在JDK中对List和Set进行并行处理,尽管使用WeakReferences编写WeakList应该相当简单。有一个示例实现 请注意,将侦听器存储为weakreference可能是危险的,因为许

我希望避免由于未删除侦听器而导致类加载器泄漏。为了促进这一点,我相信弱或软引用听众会有所帮助。严格来说,我需要的唯一收集方法是add和iterator

是否有任何foss库的集合或列表使用弱引用或软引用


任何建议都将不胜感激,否则我将自己写。

有一个java.util.WeakHashMap。我不确定是否在JDK中对List和Set进行并行处理,尽管使用WeakReferences编写WeakList应该相当简单。有一个示例实现


请注意,将侦听器存储为weakreference可能是危险的,因为许多人将侦听器编码为匿名类,这样很容易接触不到和gc-ed。

有一个java.util.WeakHashMap。我不确定是否在JDK中对List和Set进行并行处理,尽管使用WeakReferences编写WeakList应该相当简单。有一个示例实现

请注意,将侦听器存储为weakreference可能是危险的,因为许多人将侦听器编码为匿名类,这样很容易接触不到和gc-ed。

您实际上可以使用WeakHashSet实现此目的。只需对所有值使用null

编辑 WeakHashMap表示WeakHashSet,Boolean.TRUE表示值。

您实际上可以为此目的使用WeakHashSet。只需对所有值使用null

编辑
WeakHashMap用于WeakHashSet,Boolean.TRUE用于值。

是我自己使用WeakHashMap作为bucket编写的。

是我自己使用WeakHashMap作为bucket编写的。

我使用处理程序模式,在该模式下,我将为每个添加的侦听器返回一个删除程序。移除程序保存对侦听器的引用,该侦听器用于从集合中移除。当然,正确的使用方法是保留并在应该删除的时候调用删除程序。我使用的是处理程序模式,在这里,我为每个添加的侦听器返回一个删除程序。移除程序保存对侦听器的引用,该侦听器用于从集合中移除。正确的使用方法当然是保留并在应该移除时呼叫移除器。