Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
        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();
        }