C#弱引用

简介:

1、弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用。

2、弱引用在引用对象的同时仍然允许对该对象进行垃圾回收。

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

4、以下是msdn中的内容 

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

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

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

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

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

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

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



本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2011/05/04/2036360.html,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
Java
【JVM】深入理解Java引用类型:强引用、软引用、弱引用和虚引用
【JVM】深入理解Java引用类型:强引用、软引用、弱引用和虚引用
123 0
|
8月前
|
缓存 Java 程序员
Java 中的强引用、弱引用、软引用和虚引用
引用方式内存不足时垃圾回收机制启动时其余情况强引用否否否软引用是否否弱引用是是否虚引用可能可能可能在一般的程序中,弱引用和虚引用很少会被用到,强引用天天都在用就不必我说了,在有些情况下(如资源文件很大,但并不是全部要在同一时刻使用)我们会使用软引用来代替原来的强引用,一是可以避免某些情况下产生的 OOM,此外,它可以减少程序使用的内存,加速程序的运行。
73 1
|
4月前
|
缓存 Java 程序员
Java垃圾回收: 什么是强引用、软引用、弱引用和虚引用?
Java垃圾回收: 什么是强引用、软引用、弱引用和虚引用?
34 2
|
10月前
|
Java
强引用、软引用、弱引用、虚引用的区别?
强引用、软引用、弱引用、虚引用的区别?
67 0
|
10月前
|
Java
JVM学习日志(八) 强引用,软引用,弱引用,虚引用
强引用,软引用,弱引用,虚引用 简述
67 0
JVM学习日志(八) 强引用,软引用,弱引用,虚引用
|
10月前
|
算法 Java C++
14-理解Java中的不同引用类型:强引用、软引用、弱引用和虚引用
这篇文章将深入探讨Java中的四种引用类型:强引用、软引用、弱引用和虚引用。我们将逐一解释每种引用类型的特性和用途。
44 0
14-理解Java中的不同引用类型:强引用、软引用、弱引用和虚引用
|
11月前
|
Java C++
Java引用类型:强引用,软引用,弱引用,虚引用
Java引用类型:强引用,软引用,弱引用,虚引用
57 0
|
算法 Java
java中的强引用、软引用、弱引用、虚引用
java中将引用类型分为强引用、软引用、弱引用、虚引用。之所以要这么划分,还是为了GC时更好的对对象进行处理。因为jvm已经明确了各种引用的GC方式,所以谈四种引用最好是和GC一起聊才会有意义(个人愚见)。
120 0
|
缓存 Java 关系型数据库
强引用、软引用、弱引用、幻象引用有什么区别和使用场景
强引用、软引用、弱引用、幻象引用有什么区别和使用场景
159 1
|
缓存 Java
强引用、软引用、弱引用、虚引用有什么区别?
本文主要介绍强引用、软引用、弱引用、虚引用
153 0