[讨论] 弱引用有什么好处?

tangligang 2004-01-08 04:55:13
说弱引用是提高性能的一种方式,用于减少托管堆中大对象的压力,这怎么理解呢?

...全文
422 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lys1978900 2004-02-02
  • 打赏
  • 举报
回复
写错了,应该是

class1 A = new class1();
class1 B = A;

这时在堆中有两个class1对象?

=====================================
只存在一个,简单的说,是堆中同一个位置得2个引用。

tangligang 2004-02-02
  • 打赏
  • 举报
回复
如何减少所占资源?
flying310 2004-01-30
  • 打赏
  • 举报
回复
减少所占资源
flying310 2004-01-30
  • 打赏
  • 举报
回复
减少资源。
tangligang 2004-01-30
  • 打赏
  • 举报
回复
up
tangligang 2004-01-08
  • 打赏
  • 举报
回复
写错了,应该是

class1 A = new class1();
class1 B = A;

这时在堆中有两个class1对象?
tangligang 2004-01-08
  • 打赏
  • 举报
回复
TO: YAOTIEBING(我爱我家)

你的意思是:

class1 A = new class1();
class2 B = A;

这时在堆中有两个class1对象?
yaotiebing 2004-01-08
  • 打赏
  • 举报
回复
不再堆中分配空间!!真正引用是会变成强引用
tangligang 2004-01-08
  • 打赏
  • 举报
回复
flysnowjava(大象~大象~鼻子长) 兄:

本来实际存在的是一个对象
可以当n个来使用

你的意思是通过Target属性得到对象的引用吗?这样做有意义吗?直接调用强引用赋值不是一样吗?
renrenqq 2004-01-08
  • 打赏
  • 举报
回复
以下是msdn中的内容

公共语言运行库“垃圾回收”机制回收分配给对象的无法访问的(即“不可到达的”)内存。如果对对象的所有引用变得无效(例如,将那些引用设置为空引用(Visual Basic 中为 Nothing)),则该对象成为不可到达的。

垃圾回收将调用对象的 Finalize 方法(即执行“终结”),如果存在这样的方法并且指示这样做。终结完成后,如果以某种方式重新获取并重用垃圾回收对象,则将发生不可预知的结果。

被直接或间接引用的对象是“可到达的”,不允许垃圾回收器回收它。对可到达的对象的引用称为“强引用”。

“弱引用”也引用可到达的对象(称为“目标”)。用户通过将 Target 属性的值赋给变量来获取对目标的强引用。但是,如果没有对目标的强引用,目标将变得符合垃圾回收条件,即使它仍然有弱引用。

在对象变为符合垃圾回收条件时的时间和它被回收的时间之间可能有一个延迟。如果用户试图在目标已被回收后检索它,将只会检索到空引用。如果目标尚未被回收,则将检索到有效的引用。

对象可以是已使用的(即“活着的”);变成未使用的并符合垃圾回收条件(即“死掉的”);然后再被使用(即“复活的”)。但是,如果在终结后访问复活的对象,将导致不可预知的行为。

WeakReference 对象可以指定在终结之后是否保持对其目标的引用;即弱引用是否应跟踪目标的复活。不跟踪复活的弱引用称为“短弱引用”,跟踪复活的弱引用称为“长弱引用”。

renrenqq 2004-01-08
  • 打赏
  • 举报
回复
只知道
弱引用在引用对象的同时仍然允许对该对象进行垃圾回收。
codinghello 2004-01-08
  • 打赏
  • 举报
回复
本来实际存在的是一个对象
可以当n个来使用

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧