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; }
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(); }
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(); }
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(); }
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)); }
public static void MakeACar() { Car myCar = new Car(); myCar = null; }