在.NET 中自动垃圾管理 是垃圾回收器来做的。GC自动完成对托管堆的全权管理,然后把所有的事情都交给GC来做。

对于.NET 程序员及基于性能安全考虑有必要对GC工作原理,执行过程进行深层次探讨。

垃圾回收机制从以下几个方面来讨论:

1,什么样的对象GC认为 是垃圾呢。

2,GC如何来回收垃圾呢。

3,GC何时来回收垃圾呢。

4,GC回收之后要操作些什么呢。

好。那我们一一来揭晓谜底吧。

l   什么样的对象被GC认为是垃圾呢?

一个对象成为垃圾:那就说明这个对象不在被任何使用。

其实每个对象 都有一组指针,针指向拖管堆的存储位置,由JIT编译器与CLR运行时维护根指针列表,包括全

局变量、静态变量、局部变量和寄存器指针等

class A { private B objB; public A(B o) { objB = o; } ~A() { Console.WriteLine("Destory A."); }}
class B { private C objC; public B(C o) { objC
= o; } ~B() { Console.WriteLine("Destory B."); } }
class C { ~C() { Console.WriteLine(
"Destory C."); } }
public class Test_GCRun
{
public static
void Main()
{ A a
= new A(new B(new C())); //强制执行垃圾回收 GC.Collect(0); GC.WaitForPendingFinalizers();
}

相关文章: