Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilRomana Soukupová
1
FEL Komunikátor
2
Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java Virtual Machine ▫odstraňuje neplatné objekty
3
Garbage Collector Základ paměťového modelu ▫zásobník (stack) ▫halda (heap) Vytvořený objekt je alokován v Heap ▫new Object(); - na haldě vznikne nový objekt Vytvořená proměnná je alokována na Stack ▫Object o; - na zásobníku vznikne prázdný záznam, na který odkazuje proměnná o
4
Garbage Collector II Object o = new Object(); ▫proměnná o, která odkazuje na záznam v zásobníku ▫voláním konstruktoru vznikne objekt na haldě ▫operátor = zajistí, že do záznamu na zásobníku se dostane paměťový odkaz na objekt alokovaný na haldě
5
Garbage Collector III Živý objekt ▫záznam ze zásobníku odkazuje na objekt ležící na haldě Mrtvý objekt ▫Na objekt ležící na haldě se nevstahuje žádný záznam ze zásobníku GC maže pouze mrtvé objekty
6
FEL Komunikátor Zaregistrovány malé paměťové úniky ▫Nesouvisí s kódem (proměnnými) ▫Rekurzivní volání ▫Tvorba vláken
7
Příklad Memory Leaku public class RodnaCisla{ private static Map cisla = new HashMap(); public String getRC(Integer id){ String rc = cisla.get(id); if(rc == null) { rc =...//získej číslo např. z DB cisla.put(id, rc); } return rc; } na zásobníku statická proměnná cisla – vznikne při zavedení třídy RodnaCisla ClassLoaderem každým požadavkem na vrácení rodného čísla – se tohle číslo mimo jiné uloží do mapy – vznikají živé objekty
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.