短弱参考和长弱参考有什么区别

本文关键字:参考 什么 区别 | 更新日期: 2023-09-27 18:21:41

我知道以下知识:

弱引用允许垃圾回收器收集对象 同时仍允许应用程序访问对象。

因此,如果对象已被回收,则必须在必要时再次创建它。

那么,短弱参考和长弱参考有什么区别呢?我认为如下:(根据msdn(

简短的弱引用:如果 GC 回收对象,则对象确实是 释放。

长弱引用:如果 GC 回收对象,则对象仍 存在(因为它被缓存(。

那么有人可以告诉我更多细节吗?

短弱参考和长弱参考有什么区别

当对象为 通过垃圾回收回收。弱引用本身是一个 托管对象,并且像任何对象一样受到垃圾回收 其他托管对象。默认为短弱引用 弱引用的构造函数。

在对象的 Finalize 方法之后保留长弱引用 已被调用。这允许重新创建对象,但状态 的对象仍然不可预测。要使用长引用,请指定 在弱引用构造函数中为 true。

如果对象的类型没有 Finalize 方法,则短弱 引用功能适用,弱引用仅有效 直到收集目标,这可能在 终结器正在运行。

若要建立强引用并再次使用该对象,请强制转换 对象类型的弱引用的目标属性。如果 目标属性返回 null,对象已收集;否则 您可以继续使用该对象,因为应用程序具有 重新获得了对它的强烈引用。

使用弱引用的准则

仅在必要时使用长弱引用作为 对象在定型后不可预测。避免使用弱 对小对象的引用,因为指针本身可能同样大 或更大。

避免使用弱引用作为内存的自动解决方案 管理问题。相反,应为 处理应用程序的对象。

参考