Exemplo n.º 1
0
 static void MakeACar()
 {
     // If myCar is the only reference to the Car object,
     // it *may* be destroyed when this method returns.
     Car myCar = new Car();
     myCar = null;
 }
Exemplo n.º 2
0
        static void Main(string[] args) {
            Console.WriteLine("Estimated bytes on heap {0}", GC.GetTotalMemory(false));

            Console.WriteLine("this OS has {0} object generations", GC.MaxGeneration + 1);


            Car car = new Car("Zippy", 100);
            Console.WriteLine(car);
            Console.WriteLine("Generation of myCar is {0}", GC.GetGeneration(car));

            object[] tonsOfObjects = new object[50000];
            for (int i = 0; i < tonsOfObjects.Length; i++) {
                tonsOfObjects[i] = new object();
            }

            GC.Collect(0, GCCollectionMode.Forced);
            GC.WaitForPendingFinalizers();

            Console.WriteLine("Generation of myCar is {0}", GC.GetGeneration(car));

            if (tonsOfObjects[9000] != null) {
                Console.WriteLine("Generation of tonsOfObjects[9000] is {0}", GC.GetGeneration(tonsOfObjects[9000]));
            }

            Console.WriteLine("Gen 0 has been swept {0} times", GC.CollectionCount(0));
            Console.WriteLine("Gen 1 has been swept {0} times", GC.CollectionCount(1));
            Console.WriteLine("Gen 2 has been swept {0} times", GC.CollectionCount(2));

            Console.ReadLine();



        }
Exemplo n.º 3
0
        static void Main( string[] args )
        {
            Console.WriteLine("***** Fun with System.GC *****");

            // Print out estimated number of bytes on heap.
            Console.WriteLine("Estimated bytes on heap: {0}",
              GC.GetTotalMemory(false));

            // MaxGeneration is zero based.
            Console.WriteLine("This OS has {0} object generations.\n",
              (GC.MaxGeneration + 1));
            Car refToMyCar = new Car("Zippy", 100);
            Console.WriteLine(refToMyCar.ToString());

            // Print out generation of refToMyCar.
            Console.WriteLine("\nGeneration of refToMyCar is: {0}",
              GC.GetGeneration(refToMyCar));

            // Make a ton of objects for testing purposes.
            object[] tonsOfObjects = new object[50000];
            for (int i = 0; i < 50000; i++)
                tonsOfObjects[i] = new object();

            // Collect only gen 0 objects.
            GC.Collect(0, GCCollectionMode.Forced);
            GC.WaitForPendingFinalizers();

            // Print out generation of refToMyCar.
            Console.WriteLine("Generation of refToMyCar is: {0}",
              GC.GetGeneration(refToMyCar));

            // See if tonsOfObjects[9000] is still alive.
            if (tonsOfObjects[9000] != null)
            {
                Console.WriteLine("Generation of tonsOfObjects[9000] is: {0}",
                  GC.GetGeneration(tonsOfObjects[9000]));
            }
            else
                Console.WriteLine("tonsOfObjects[9000] is no longer alive.");

            // Print out how many times a generation has been swept.
            Console.WriteLine("\nGen 0 has been swept {0} times",
              GC.CollectionCount(0));
            Console.WriteLine("Gen 1 has been swept {0} times",
              GC.CollectionCount(1));
            Console.WriteLine("Gen 2 has been swept {0} times",
              GC.CollectionCount(2));
            Console.ReadLine();
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            WriteLine("***** Fun with System.GC *****");

            WriteLine("Estimated bytes on heep: {0}",
                GC.GetTotalMemory(false));

            WriteLine("This OS has {0} object generations.\n",
                (GC.MaxGeneration + 1));

            Car refToMyCar = new Car("Zippy", 100);
            WriteLine(refToMyCar.ToString());
            refToMyCar.Dispose();

            WriteLine("Generation of refToMyCar is: {0}",
                GC.GetGeneration(refToMyCar));

            object[] tonsOfObjects = new object[50000];
            for (int i = 0; i < 50000; i++)
                tonsOfObjects[i] = new object();

            GC.Collect(0, GCCollectionMode.Forced);
            GC.WaitForPendingFinalizers();

            WriteLine("Generation of refToMyCar is: {0}",
                GC.GetGeneration(refToMyCar));

            if (tonsOfObjects[9000] != null)
            {
                WriteLine("Generation of tonsOfObjects[9000] is: {0}",
                    GC.GetGeneration(tonsOfObjects[9000]));
            }
            else
            {
                WriteLine("tonsOfObjects[9000] is on longer alive.");
            }

            WriteLine("\nGen 0 has been swept {0} times",
                GC.CollectionCount(0));
            WriteLine("\nGen 1 has been swept {0} times",
                GC.CollectionCount(1));
            WriteLine("\nGen 2 has been swept {0} times",
                GC.CollectionCount(2));

            ReadLine();
        }
Exemplo n.º 5
0
        static void Main(string[] args)
        {
            var start = DateTime.Now;
            // Метод GetTotalMemory возвращает размер памяти в байтах которую занимают объекты в управляемой куче.
            Console.WriteLine("Размер памяти в байтах в управляемой куче {0}", GC.GetTotalMemory(false));

            // Свойство MaxGeneration возвращает максимальное количество поколений, поддерживаемое данной системой.
            Console.WriteLine("Система поддерживает {0} поколения\n", (GC.MaxGeneration + 1));

            Car car = new Car("RENAULT", 120);
            Console.WriteLine(car.ToString());

            // Метод GetGeneration() возвращает поколение, к которому относится данный объект.
            Console.WriteLine("\nОбъект car относится к {0} поколению\n", GC.GetGeneration(car));
            Console.WriteLine("Размер памяти в байтах в управляемой куче {0}", GC.GetTotalMemory(false));

            object[] array = new object[10000000];
            ShowGCStart();

            for (int i=0; i<array.Length; i++)
            {
                array[i] = new object();
            }

            Console.WriteLine("Размер памяти в байтах в управляемой куче {0}", GC.GetTotalMemory(false));
            array = null;
            ShowGCStart();

            Console.WriteLine("\nМассив построен, запускаем GC ");

            // Метод Collect() - дает указание сборщику мусора проверить объекты определенного поколения
            GC.Collect();

            ShowGCStart();

            // Метод WaitForPendingFinalizers() приостанавливает выполнение текущего потока, пока
            // не будут отработаны все объекты, предусматривающие финализацию.
            GC.WaitForPendingFinalizers();

            Console.WriteLine("GC отработал   " + (DateTime.Now - start).TotalMilliseconds + "\n");
            Console.WriteLine("Размер памяти в байтах в управляемой куче {0}", GC.GetTotalMemory(false));
            Console.WriteLine("\nОбъект car относится к {0} поколению\n", GC.GetGeneration(car));
        }
Exemplo n.º 6
0
 public static void MakeACar()
 {
     Car myCar = new Car();
     myCar = null;
 }