Elemezzük memóriavesztés java alkalmazások visualvm

memóriavesztés - ez a betegség, és OutOfMemoryError (OOM) - egyik tünete is. De nem minden OOM feltétlenül jelenti azt, memóriavesztés. OOM előfordulhat eredményeként előállító nagyszámú helyi változók - különösen, ha nagyszámú egyidejű kérések (ha a kiszolgáló alkalmazás). Másrészt feltétlenül az összes memóriavesztés jelennek OOM - különösen abban az esetben, asztali és kliens alkalmazások (amelyek nem működnek sokáig újraindítás nélkül).

Memóriavesztés lehet a halom memória terület tárolására használható meta információkat, a natív memória.

Az alábbi szakaszok csak a memóriavesztés egy kupacban. A vita, hogyan kell meghatározni, hogy mi az oka a memóriavesztést OOM az Ön esetében, túlmutat ezt a cikket. Hogyan kell kezelni a memória szivárgás a területen használt memória tárolja a meta-adatok is túlmutat ezt a cikket. És persze fogalmam sincs, hogyan kell hibakeresés memóriavesztés natív memóriában.

Memória szivárgás egy kupacban

1) az alkalmazás futtatásához. Használja a rendelkezésre álló legfrissebb JDK (JDK 1.6 ebben az időben). Az új változat a java jelentősen javult hibakereső eszközök. Különböző műveletek az alkalmazás fut több alkalommal, hogy melyik közülük vezet memóriavesztés.

Elemezzük memóriavesztés java alkalmazások visualvm

Elérése egy stabil állapotát az alkalmazás. Nézze meg a kupac mérete egy ideig. Ha a „méret a kupac után egy teljes szemétgyűjtő” (azaz az összes) minden egyes alkalommal növekszik, az azt jelzi, memóriavesztés. És ez a megállapítás tudjuk használni VisualVM. Most már meghatározta a művelet, ami a memóriavesztés - tehát ha művelet elvégzéséhez többször kap a OOM. (Mi lenne, ha nem tudja azonosítani a művelet, ami a memóriavesztés?) Ezután azt feltételezzük, hogy ezt a műveletet folyamatosan végezzük.

3) Run VisualVM

4) A kérelemhez mellékelt - az összes futó virtuális gépen java folyamatokat sorolunk a bal oldalon (a megjelenítendő fő osztály neve). Akkor kattintson duplán a érdekli. A jobb oldalon négy fül - mi érdekel és ellenőrzi profiler.

Elemezzük memóriavesztés java alkalmazások visualvm

5) Kattintson a Profiler fülre. Jelölje be a négyzetet, hogy megjelenjen a különböző beállítási lehetőségek. Ide Memory fülre. Kiválasztás „rekord juttatások veremkövetés”. Távolítsuk el a beállításokat jelölőnégyzetet - ez bezárja a panel beállításokat (minden változást automatikusan mentve).

Elemezzük memóriavesztés java alkalmazások visualvm

6) Most kattintson a „memória” - kezdődik memória profil. Várjon néhány másodpercet - ez némi időt vesz igénybe. A panel fülek különböző osztályok és információk a példányszámot, a teljes méret byte-ban.

7) megvárni a kérelem állapot stabilizálódott.

8) Készítsen egy képet tárgyak a gomb megnyomásával a felső panel a fülek (lásd a képet). Az így kapott kép jelenik meg a jobb oldalon, és a nyomot hagyott.

Elemezzük memóriavesztés java alkalmazások visualvm

9) várjon egy ideig, hogy memória szivárgás. Készítsen egy képet, valamint az előző lépésben. Most két lövés.

10) Válassza ki a két kép a bal oldalon, majd kattintson a jobb egérgombbal, és válassza a „össze”. A jobb oldalon a lap, hogy az összehasonlítás eredménye jelenik meg. Ez a lap megjeleníti azokat az elemeket, amelyek magasabb volt az értékek között eltelt időszakra az első és a második kép. A legfelső elem okozhat memóriavesztés.

Elemezzük memóriavesztés java alkalmazások visualvm

11) Ismét megy a Profiler lapra. Egy pontot az előző lépésben. Kattintson a jobb egérgombbal, és válassza a „Pillanatfelvétel készítése és mutassa elosztása veremkövetések”. Ez létrehoz egy másik lövés. Ebben az időben, a megfelelő részt az ablak, mint egy lap a stack trace jelenik meg. Felsorolja azokat a helyeket, ahol az elem példányai, valamint a százalékos hozzájárulása a teljes memória használat.

Elemezzük memóriavesztés java alkalmazások visualvm

12) Várj történhet több memóriavesztés. Vegyünk egy pár több lövést.

13) Szerezzen be egy halom lerakó által használt alkalmazás. Ezt meg lehet tenni a jobb gombbal kattint a kérelmet, és kiválasztja a „halom lerakó”.

14) Most menj vissza a megfelelő képeket a stack trace. Hasonlítsd össze ezt a két kép a veremkövetést. Adjuk módszereket, amelyek lényegesen eltérnek a hozzájárulást a teljes memória használat. Ezek azok a helyek, ahol instatsiirovanie tárgyak vezet memóriavesztés.

Elemezzük memóriavesztés java alkalmazások visualvm

15) Menj a halom lerakó lap jobb oldalán. Keresse osztályok ablakot. Kattintson duplán meghatározott tétel a 10. lépésben. Jeleníti meg a példányokat ebben az osztályban. Válassza ki a példányt, amely úgy gondolja, bűnös memóriavesztés (csak megérzés). Nézd meg a jobb oldalon. Nyisd ki az ablakot. Látni fogja tárgyak hivatkozó ezekben az esetekben. Itt az oka memóriavesztés.

16) Az elemek határozzák meg a 10. lépést, és a kapott információkat a 14. és a 15. lépésben meg tudjuk oldani a problémát memóriavesztés. Találtunk az objektumot, ami a szivárgást, a hely létrehozása és a tárgyakat, hogy hivatkoznak rá.

Kapcsolódó cikkek