Heapdump készítése Java alaklamzásoknál

kami911 képe

A Java Heapdump egy olyan eszköz, amely lehetővé teszi a Java alkalmazások memóriahasználatának elemzését. A Heapdump egy nagyon fontos eszköz a hibakereséshez és a teljesítmény optimalizálásához. A Java Heapdump készítésének különböző módjai között szerepelnek:

  1. JVM paranccsal: A JVM paranccsal lehetőség van a Java Heapdump manuális készítésére. Ehhez futtatni kell a jmap -dump parancsot, amely a JVM-hez kapcsolódó Heapdump fájlt hozza létre:

    1. jmap -dump:format=b,file=<filename> <pid>
      Teljes Heapdump létrehozás. Ez a parancs létrehoz egy Heapdump fájlt a megadott <filename> fájlnévvel és a formátumot a b argumentum határozza meg (binary format). Az <pid> azonosítója a futó Java alkalmazásnak.

    2. jmap -dump:live,format=hprof,file=<filename> <pid>
      GC utáni, csak élő objektumokat tartalmazó Heapdump létrehozás. Ez a parancs létrehoz egy Heapdump fájlt a megadott <filename> fájlnévvel és a formátumot a hprof argumentum határozza meg. A live argumentum azt jelenti, hogy csak a még élő objektumok kerülnek bele a fájlba.

    3. jcmd <pid> GC.heap_dump <filename>
      GC utáni, csak élő objektumokat tartalmazó Heapdump létrehozás. Ez a parancs létrehoz egy Heapdump fájlt a megadott <filename> fájlnévvel, és azonos azonosítójú Java alkalmazásnak, amely fut a megadott <pid> azonosítóval.

    4. jcmd <pid> GC.heap_dump <filename>
      Teljes Heapdump létrehozás. Ez a parancs létrehoz egy Heapdump fájlt a megadott <filename> fájlnévvel, és azonos azonosítójú Java alkalmazásnak, amely fut a megadott <pid> azonosítóval.

  2. A GDB: The GNU Project Debugger segítségével, amely használata előtt elepíteni kell a gdb csomagot. A parancsokat ebben az esetben egymás után kell végrehajtani, de - az első kivételével - nem feltétlenül a Java alkalmazásszervert futtató gépen.

    1. gcore -o <filename_1> <pid>
      Threaddump készítése a GNU Project Debugger gcore eszközének segítségével.

    2. jmap -dump:format=b,file=<filename_1> <filename_2>
      A Threaddump átalakítása Heapdump formátumba.

    3. gdb --core <filename_2>
      Az elkészült Heapdump ellenőrzése, illetve a Java verziókkal kapcsolatos információk beszerzése.

  3. Profilozó szoftverekkel: A profilozó szoftverek, például a VisualVM, lehetővé teszik a Java Heapdump automatikus készítését, amikor az alkalmazás futása során meghatározott memóriaszintet elér. Az ilyen szoftverek lehetővé teszik a memóriahasználat mélyreható elemzését is.

  4. Kézi kód beillesztéssel: Az alkalmazásba beilleszthetünk egy kódrészletet, amely manuálisan készít Heapdump fájlt, amikor az alkalmazás futása során meghatározott feltételek teljesülnek. Ezt a módszert általában akkor használják, ha a fenti módszerek nem állnak rendelkezésre, vagy ha egyedi feltételeknek kell megfelelni.

A Heapdump fájlok megnézhetők és elemezhetők különböző eszközökkel, például a VisualVM, a Eclipse Memory Analyzer (MAT) vagy a IBM Heap Analyzer segítségével.