CLR的一个核心功能-垃圾回收 垃圾回收的目的:提高内存利用率 垃圾回收期,只回收托管堆中的内存资源,不回收其他资源(数据库连接、文件句柄、网络端口等) 什么样的对象才会被回收? 没有变量引用的对象。 什么时候回收? 不确定,当程序需要新内存的时候开始执行回收,垃圾回收是自动执行的,不需要手动干预。 GC.Collect()//手动调用垃圾回收期。不建议使用,垃圾回收时会暂停一下,让程序自动去GC。 垃圾回收器中 “代” 的概念 共3代, 0代 、1代、2代。 各代的回收频率:第0代最高,其次第1代,再次第2代。 弱引用
Person p
= new Person();
WeakReference wr
= new WeakReference(p
); 对p进行弱引用
p
=null;
object o
=wr
.Target
; 判断是否被垃圾回收
if(o
!=null) 若未被回收
{
Person p1
= o
as Person
; 然后就可以使用Person对象了(这个对象还是原来的对象)
}