/ / pomocou Jvisualvm na detekciu únikov pamäte - java, úniky pamäte, jvisualvm

pomocou Jvisualvm na detekciu úniku pamäte - java, úniku pamäte, jvisualvm

Moja nádoba na java je iba jednou z mnohých väčšíchprogram používa. Snažím sa zistiť, či je môj kód príčinou úniku pamäte alebo či existujú iné problémy ako môj kód. Používam jvisualvm a identifikoval som všetky svoje triedy a žiadna z nich sa nezdá podozrivá. Pri pohľade na vzorkovník vidím, že byte [], char [] a int [] sa javia ako najväčší používatelia z hľadiska veľkosti a vytvorených inštancií. problém je, že nemôžem určiť, komu patria. Viem, že mám v programe rôzne bajty [], ale keďže existuje asi 32 000 prípadov, je ťažké určiť zdroj, ktorý sa na ne pozerá jeden po druhom. Existuje spôsob, ako filtrovať údaje tak, aby bolo možné zobraziť iba položky pochádzajúce z určitej nádoby alebo oblasti? Vďaka.

odpovede:

1 pre odpoveď č. 1

Pokiaľ neviete, že tvoríte veľa byte[] alebo String v tomto prípade by som peniaze nevložil byte[] alebo char[] zdrojom problému. Takmer každá hromada, ktorú som prekopal, má kopu z nich, pretože sa používajú v mnohých bitoch interných prvkov Java. Nehovorím, že sú môžu "t problém, ale je plodnejšie najskôr sa sústrediť na neobvyklé množstvo predmetov, ktoré poznáte vy vytvárajú, aj keď nie sú tými najväčšími vecami na kope.

Ja osobne som našiel MAT lepšie pre analytické práce ako VisualVM, aj keď VisualVM je skvelý na sledovanie využitia pamäte za behu a sledovanie cyklov GC.

MAT tiež umožňuje rozbaliť a vidieť prichádzajúcea odchádzajúci odkaz na zadržané objekty. Takto získate lepší obraz o tom, ktoré objekty držia viac pamäte, ako ste čakali, a mal by vám pomôcť zistiť, či je vinníkom jeden z objektov vo vašom JAR.

Pomocná dokumentácia zahrnutá v MAT je celkom dobrá a určite stojí za prečítanie, aby ste mohli začať.

Ak sa chcete dostať ešte ďalej do králičej nory, prečítajte si OQL, pomocou ktorého môžete vyhľadávať haldy v MAT aj VisualVM.

MAT nájdete tu: http://www.eclipse.org/mat/


Vykopal som niekoľko podkladov (niektoré sú trochu zastarané, ale stále sú relevantné, aby som vytvoril lepší obraz o prístupe k problému).

Úniky sa dajú ľahko nájsť, ale analýza využitia pamäte je o niečo zložitejšia
Úniky pamäte sa dajú ľahko nájsť
Nájdenie úniku pamäte pomocou analyzátora pamäte SAP

Oplatí sa tiež trochu porozumieť GC pri pohľade na hromadu, ktorá stojí za to listovať týmito:
Ladenie GC
Diagnostika problému s odvozom odpadu