static void Main(string[] args) { Console.WriteLine("System contains {0} generations.", (GC.MaxGeneration + 1)); Console.WriteLine(new string('_', 40)); NormalObject @object = new NormalObject(); new Thread(AuxiliaryMethod).Start(); for (int i = 0; i < 30; i++) { Console.Write("Generation: {0} |", GC.GetGeneration(@object)); Console.WriteLine("Size of heap = {0} Kb", GC.GetTotalMemory(false) / 1024);//true Thread.Sleep(100); } Console.WriteLine(new string('_', 40)); Console.WriteLine("Generation 0 was checked {0} times", GC.CollectionCount(0)); Console.WriteLine("Generation 1 was checked {0} times", GC.CollectionCount(1)); Console.WriteLine("Generation 2 was checked {0} times", GC.CollectionCount(1)); Console.WriteLine(new string('_', 40)); }
static void Main() { Console.WriteLine("Система поддерживает {0} поколения.", (GC.MaxGeneration + 1)); Console.WriteLine(new string('-', 40)); NormalObject @object = new NormalObject(); // Параллельное наполнение малой кучи другими объектами. new Thread(AuxiliaryMethod).Start(); for (int i = 0; i < 30; i++) { Console.Write("Поколение: {0} | ", GC.GetGeneration(@object)); Console.WriteLine("Размер кучи = {0} KB", GC.GetTotalMemory(false) / 1024); // true Thread.Sleep(100); } Console.WriteLine(new string('-', 40)); Console.WriteLine("Поколение 0 проверялось {0} раз", GC.CollectionCount(0)); Console.WriteLine("Поколение 1 проверялось {0} раз", GC.CollectionCount(1)); Console.WriteLine("Поколение 2 проверялось {0} раз", GC.CollectionCount(2)); Console.WriteLine(new string('-', 40)); }