Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }