gpt4 book ai didi

.net - WeakReference.Target GC 后 WeakReference 会发生什么

转载 作者:行者123 更新时间:2023-12-04 05:21:51 24 4
gpt4 key购买 nike

当 WeakReference.Target 引用的目标对象被垃圾回收后,WeakReference 会发生什么? WeakRerence 是否存活并保持存在?
我问的原因是我有一个存储在 List 中的 WeakReferences 列表。在运行时,新的 WeakReferences 不断被添加到该列表中。现在当目标对象死亡时,我是否必须自己清理废弃的 WeakReference?
如果是这样,是否有一个聪明的技巧可以做到这一点?当 WeakReference 被放弃时,我能得到通知吗?或者我是否必须引入一个经常循环遍历该列表的计时器,以查看是否可以从该列表中删除任何 WeakReference 实例。

最佳答案

这是弱引用的常见问题。引用本身保持事件状态,因为它有指向它的普通指针。正如您所建议的,您需要不时进行一些“手动垃圾收集”。请注意,当您出于其他原因遍历列表时,您可能可以在途中清理 stub 。根据列表的使用模式,这种“侧面”垃圾收集甚至可能就足够了。

不要为了清理列表而“经常”循环遍历列表!每个死 stub 只会浪费几个字的内存。如果列表不经常使用,清理它的计算成本通常是不合理的,如果经常使用它,它会按照上面的建议清理自己。

它完全在另一个垃圾收集系统中,但问题是如此相似以至于您可能对 this article 感兴趣如果你能得到它。

关于.net - WeakReference.Target GC 后 WeakReference 会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1813740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com