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:
-
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:
-
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. -
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. -
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. -
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.
-
-
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.
-
gcore -o <filename_1> <pid>
Threaddump készítése a GNU Project Debugger gcore eszközének segítségével. -
jmap -dump:format=b,file=<filename_1> <filename_2>
A Threaddump átalakítása Heapdump formátumba. -
gdb --core <filename_2>
Az elkészült Heapdump ellenőrzése, illetve a Java verziókkal kapcsolatos információk beszerzése.
-
-
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.
-
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.