我知道以下知识:
弱引用允许垃圾收集器收集对象 同时仍允许应用程序访问该对象。
因此,如果对象已被回收,则必须在必要时再次创建。
然后,短弱参考和长弱参考之间有什么区别?我想到如下:(根据msdn)
简短弱引用:如果GC回收对象,则对象确实如此 释放。
长弱引用:如果GC回收对象,则对象仍然是 存在(因为它被缓存)。
那么有人可以告诉我更多细节吗?
答案 0 :(得分:5)
<强>短强>
当对象出现时,短弱引用的目标变为null 垃圾收集回收。弱参考本身就是一个 托管对象,并且像任何一样受垃圾收集 其他管理对象。一个简短的弱引用是默认值 WeakReference的构造函数。
<强>长强>
在对象的Finalize方法之后保留长弱引用 被称为。这允许重新创建对象,但是状态 对象仍然无法预测。要使用长引用,请指定 在WeakReference构造函数中为true。
如果对象的类型没有Finalize方法,则短弱 引用功能适用,弱引用仅有效 直到目标被收集,这可能在任何时候发生 终结者正在运行。
要建立一个强引用并再次使用该对象,请投射 将WeakReference的属性定位到对象的类型。如果 Target属性返回null,收集对象;除此以外, 您可以继续使用该对象,因为该应用程序具有 重新获得了强烈的参考。
使用弱引用的指南
仅在必要时使用长弱引用作为状态 最终确定后,对象无法预测。避免使用弱者 引用小对象,因为指针本身可能很大 或更大。
避免使用弱引用作为内存的自动解决方案 管理问题。相反,为...制定有效的缓存策略 处理应用程序的对象。