static void Main(string[] args) { Console.WriteLine("Ušao sam u 'Main'"); for (int i = 0; i < 1000; i++) // ako stavimo veliki broj objekata, GC će u jednom trenutku // početi oslobađati memoriju za nove objekte // for (int i = 0; i < 100000; i++) { KlasaSDestruktorom ksd = new KlasaSDestruktorom(); } Console.WriteLine("*** Izlazimo iz bloka ***"); Debug.WriteLine("*** Izlazimo iz bloka ***"); // explicitno pozivamo sustav za skupljanje smeća // redoslijed uništavanja objekata nije unaprijed definiran! GC.Collect(); Debug.WriteLine("*** GOTOVO!!! ***"); Console.WriteLine("GOTOVO!!!"); Console.ReadLine(); Debug.WriteLine("*** SADA JE KONAČNO!!! ***"); }
static void Main(string[] args) { Console.WriteLine("Ušao sam u 'Main'"); { KlasaSDestruktorom ksd = new KlasaSDestruktorom(); // iako izlazimo iz bloka, destruktor se ne poziva } Console.WriteLine("GOTOVO!!!"); Console.ReadLine(); }
public void Destruktor_PrilikomUništenjaObjektaIspisujeSePoruka() { KlasaSDestruktorom ksd = new KlasaSDestruktorom(); Assert.AreEqual("Konstruktor objekta br. 1", cw.GetString()); ksd = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); Assert.AreEqual("Destruktor objekta br. 1", cw.GetString()); }
static void Main(string[] args) { Console.WriteLine("Ušao sam u 'Main'"); { KlasaSDestruktorom ksd = new KlasaSDestruktorom(); } Console.WriteLine("GOTOVO!!!"); Console.ReadKey(); Console.WriteLine("Završio sam 'Main'"); }
static void Main(string[] args) { Console.WriteLine("Ušao sam u 'Main'"); { KlasaSDestruktorom ksd = new KlasaSDestruktorom(); } // TODO: Dodati for petlju koja će se ponoviti 100000 puta i unutar koje će se kreirati novi objekti tipa KlasaSDestruktorom. Pokrenuti program i provjeriti redni broj prvog uništenog objekta. Console.WriteLine("GOTOVO!!!"); Console.ReadKey(); Console.WriteLine("Završio sam 'Main'"); }
static void Main(string[] args) { Console.WriteLine("Ušao sam u 'Main'"); { KlasaSDestruktorom ksd = new KlasaSDestruktorom(); } // TODO: Dodati for petlju koja će se ponoviti 100000 puta i unutar koje će se kreirati novi objekti tipa KlasaSDestruktorom. Pokrenuti program i provjeriti redni broj prvog uništenog objekta. for (int i = 0; i < 100000; ++i) { new KlasaSDestruktorom(); //unutar petlje stvaramo 100000 objekata //garbage collector nasumično odabire objekte koje briše } Console.WriteLine("GOTOVO!!!"); Console.ReadKey(); Console.WriteLine("Završio sam 'Main'"); }
static void Main(string[] args) { Console.WriteLine("Ušao sam u 'Main'"); for (int i = 0; i < 1000; i++) { KlasaSDestruktorom ksd = new KlasaSDestruktorom(); } Console.WriteLine("*** Pozivamo GC.Collect() ***"); Debug.WriteLine("*** Pozivamo GC.Collect() ***"); // explicitno pozivamo sustav za skupljanje smeća // redoslijed uništavanja objekata nije unaprijed određen! GC.Collect(); Debug.WriteLine("*** GOTOVO!!! ***"); Console.WriteLine("GOTOVO!!!"); Console.ReadKey(); Debug.WriteLine("*** SADA JE KONAČNO!!! ***"); }