首页 > 代码库 > .net 垃圾回收机制

.net 垃圾回收机制

 1 using System; 2  3 namespace GCTest 4 { 5     class Program 6     { 7         static void print(string str) { Console.WriteLine(str); } 8         static void Main(string[] args) 9         {10             var o1 = new obj();11             print("系统支持的最大代数:" + GC.MaxGeneration);12             print("o1所在代为:"+GC.GetGeneration(o1));//对象刚创建时位于0代13 14             //对所有代进行回收,o1依然存活,从0代移到1代15             GC.Collect();16             print("o1所在代为:" + GC.GetGeneration(o1));17 18             var o2 = new obj();//新建对象在0代19             //回收,o1移动到2代,o2移动到1代20             GC.Collect();21             print("o1所在代为:" + GC.GetGeneration(o1) + ",o2所在代为:" + GC.GetGeneration(o2));22             //2代上的对象如果依然被引用,在回收时将驻留在2代上23             GC.Collect();24             print("o1所在代为:" + GC.GetGeneration(o1));25             o1 = null;//将引用释放的时候,并没有立即执行回收 ,也就是说o1原来指向的对象依然存在。26             print("此时未执行回收!");27             GC.Collect();28             Console.ReadKey();       29         }30     }31     class obj32     {33         ~obj() 34         {35             Console.WriteLine("析构……");36         }37     }38 39 }

 

.net 垃圾回收机制