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.
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.
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).
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.
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.
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.
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.
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á.