GCの世代サンプル
GCの仕組みを知る為のサンプル
Collectの後にオブジェクトのGC.Generationが昇格する。
1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 5 namespace GCSample01 6 { 7 class Program 8 { 9 class Hoge 10 { 11 private string name = "hoge"; 12 13 public string Name 14 { 15 get { return name; } 16 } 17 18 ~Hoge() 19 { 20 Console.WriteLine("Called Finalized!!"); 21 } 22 } 23 static void Collect(int maxGen) 24 { 25 GC.Collect(); 26 Console.WriteLine("\tGC.Collect"); 27 } 28 static void Main(string[] args) 29 { 30 Hoge h = new Hoge(); 31 32 Console.WriteLine(h.Name.ToString()); 33 Collect(0); 34 // ここでh( Hoge )は、 0 -> 1へ世代昇格 35 Console.WriteLine("Hoge Gen is " + GC.GetGeneration(h)); 36 37 // ここでは、Generation( 0 )を解放しているので、h( Hoge )は、対象にならない 38 Collect(0); 39 Console.WriteLine("Hoge is Alive"); 40 } 41 } 42 }