Bejegyzés

Hogyan készült az Objektum?

A C#/.NET kombináció alapértelmezetten nem igényli a memória felszabadítását. Erről sok cikk jelent meg az elmúlt években. Általában csak az okoz problémát, ha nincs ideje (alacsony prioritású szálban fut, azaz nem jut neki idő) a GC-nek felszabadítania a memóriát. Általában…

Amíg az egyetemi tanulmányokban szereplő objektum hierarchia (Jármű, Gépjármű, Autó, stb.) valósul meg, nincs is szükség ezen dolgok vizsgálatára. A program memóriatérképe kicsi, lassabban történnek a dolgok, mint ahogy a GC futni tud. De mi a helyzet, amikor az objektum hierarchia összetett, túlságosan is összetett? Azaz nem triviális.

 

Túl sok a foglalt objektum!

A probléma nem is probléma, csak szépséghiba. Felhasználói környezetben (új számítógép, 4GB ram, x64) nem is jelentkezik, de programozói szemmel nem szép. Felesleges objektumok pihennek a memóriában várva a program befejezését. Ugyanis akkor minden felszabadul.

 

Honnan látjuk, hogy sokan vannak?

Jó programozó “érzi”, amikor a program nem úgy fut, mint kellene. Nemrégiben a DELL notebook-om átkapcsolt 90%-os üzemmódba (akku visszajelzés probléma). Ezt a gazdájának illik érezni. Így vagyunk a szoftverünkkel is. Érezzük, ha túl sok az adatbázis művelet vagy a memóriafoglalás. Ez a szakmánk.

Ezen túl pedig persze vannak eszközeink arra, hogy lássuk, miből mennyi készült, mennyi szabadul fel, mennyi van jelenleg. Egy erőforrás-figyelővel ősosztályonként és konkrét osztályonként is meg tudjuk vizsgálni a darabszámokat.

Kinyitva őket a konkrét példányokról is kapunk információt, bele tudunk nézni minden publikus és privát propertybe, mezőbe. A végtelenségig nyitogathatjuk az elemeket.

 

Hogyan készült az objektum?

Régóta szeretnénk tudni, hogy mikor és hol készült az a lebegő objektum, ami (mint fent láttuk) ott van. Ma megvalósítottunk (unalmas volt a napsütötte délután) egy úgynevezett Create Trace funkciót, amivel meg tudjuk állapítani, hogy mikor és milyen metódusok hívásán keresztül jött létre egy objektum. Sok minden kiderül ám ebből! A létrehozó metódus mellett a forráskód és a sor száma is látható, ahol az objektum elkészült.

Sok tennivalónk lesz ezzel az eszközzel. De legalább az eszköz megvan. Van kalapácsunk! Munkára fel…