可能是重复问题:
弱引用
这个东西有什么用?
它似乎是一种创建对象的方式,让GC可以早期收集它,如果它被早期收集了,我应该只是重新创建它。这听起来像缓存,但其他StackOverflow的问题说这是一个糟糕的缓存策略,因为实际上GC会非常迅速地回收你的对象,( 另一个问题说弱引用不适合做缓存) 类似于使用ASP.NET的Cache并将其设置为非常低的缓存驱逐时间限制。
背景:我最近在阅读TraceSource的CLR代码。在构造函数中,第一件事就是将WeakReference(this)添加到静态字典中。奇怪的是,它只在Refresh方法中使用,当TraceSource重新读取弱引用字典中每个TraceSource的配置文件时,但仅在它尚未被GC回收时使用。另外一个 StackOverflow问题表明这会导致内存泄漏。因此,我一直在阅读有关WeakReferences的文章,越来越感到困惑。