private static void Letrehozas() { var alap = new Alap("Faka", "Faka cím"); Console.WriteLine(); var leszarmazott = new Leszarmaztatott(); Console.WriteLine(); var tovabb = new TovabbSzarmaztatott(); Console.ReadKey(); }
private static void Futtatasok() { var alap = new Alap("geza", "kresz g u 2"); Console.WriteLine(); var leszarmaztatott = new Leszarmaztatott(); Console.WriteLine(); var tovabbszarmaztatott = new TovabbSzarmaztatott(); Console.WriteLine(); }
static void Main(string[] args) { var alap = new Alap(); Console.WriteLine(); var leszarmaztatott = new Leszarmaztatott(); Console.WriteLine(); var tovabbszarmaztatott = new TovabbSzarmaztatott(); Console.WriteLine(); var alap2 = new Alap("Kezdőéerték"); Console.WriteLine(); var alap3 = new Alap("Ez itt a nev", "Ez itt a cim"); Console.WriteLine(); Console.ReadKey(); }
static void Main(string[] args) { //GC osztály tartalmazza a legfontosabb GC-vel kapcsolatos funkciókat var alap = new Alap(); //var leszarmaztatott = new Leszarmaztatott(); Console.WriteLine(GC.GetGeneration(alap)); // generáció lekérdezése GC.Collect(); // szemétgyűjtés kikényszerítése (négyféle szignatúrája van ez a legegyszerűbb minden generációra lefuttatja) Console.WriteLine(GC.GetGeneration(alap)); GC.Collect(); Console.WriteLine(GC.GetGeneration(alap)); GC.Collect(); Console.WriteLine(GC.GetGeneration(alap)); GC.Collect(); Console.WriteLine(GC.GetGeneration(alap)); GC.Collect(); Console.WriteLine(GC.GetGeneration(alap)); Console.WriteLine("Alap -> null :"); alap = null; // megszüntetkük az alap-ot így lefut a finalizer //Console.WriteLine("Leszármaztatott -> null :"); //leszarmaztatott = null; GC.Collect(); Console.ReadKey(); Console.WriteLine("Szemétgyűjtés lefutott"); //Az hogy egy objektum mennyi helyet foglal a memóriában nem kérdezhető le közvetlenül de az elfoglalt memória lekérdezésével meghatározható Console.WriteLine("A lefoglalt memória {0}", GC.GetTotalMemory(false)); //lekérdezzük az elfoglalt memóriát úgy, hogy előtte nem végez szemétgyűjtést var lista = new List <string>(); //létrehozunk egy 1000 string-ből álló listát amelynek mindegyik eleme 6000 "A" karakterből áll for (int i = 0; i < 1000; i++) { lista.Add(new string('A', 6000)); } Console.WriteLine("A lefoglalt memória {0}", GC.GetTotalMemory(false)); //lekérdezzük az elfoglalt memóriát úgy, hogy előtte nem végez szemétgyűjtést for (int i = 0; i < 3; i++) { var leszarmaztatott = new Leszarmaztatott(i); // mivel ezt a változót kódblokkon belül jön létre ezért a ciklus végén ennek elvileg meg is kellene szűnnie még akkor is ha megkülönböztetjük őket // Valójában az utolsó példány nem szűnik meg az ő finalizere nem fut le csak a programfutás végén. //ez a debug mód miatt van így csak akkor szünteti meg a példányra való hivatkozást ha már felülírtuk vagy ha kilép a függvényből (Main()) //release módban egy rebuild után az elvárt módon fut vagy debug módban cikluson belül nullra kell irányítani az objektumpéldányt //leszarmaztatott = null; } GC.Collect(); //Kövessük nyomon egy hivatkozás korosítását menet közben var lista2 = new List <string>(); //létrehozunk egy 2000 string-ből álló listát amelynek mindegyik eleme 6000 "A" karakterből áll for (int i = 0; i < 2000; i++) { Thread.Sleep(10); lista2.Add(new string('A', 6000)); Console.Write(GC.GetGeneration(lista2)); } Console.ReadKey(); }