Arndt Schönbergs Weblog
Dienstag Okt. 29, 2019
Java Heap Dump erstellen und auswerten
Umgebung
- Wildfly 14
- EE8
Einen Dump erstellen
Zum einen gibt es die Möglichkeit der VM den Parameter-XX:+HeapDumpOnOutOfMemoryErrormitzugeben. Werden dann mehr als 98% der Heaps belegt, wird ein Dump im Arbeitsverzeichnis erzeugt. Der Name enthält die Prozess ID als eindeutige Kennzeichnung. Besser ist es jedoch, wenn man sich proaktiv den Speicher ansehen kann. Die Admin Console des Wildfly gibt einen ersten Überblick über den aktuellen Heap und den zugesicherten Speicher. Diese Angaben sind aber immer eine Abschätzung nach oben, da der GC meistens noch nicht alles bereinigt hat. Wird es eng, kann es sinnvoll sein mit dem Befehl
jmap -dump:format=b,file=heap.bin <pid>einen Hepa-Dump zur Laufzeit zu erstellen (jmap findet sich im bin Verzeichnis des JDK). Die Prozess ID bekommst du unter Windows aus dem Task Manager oder unter Linux mit ps –ef | grep java.
Dump anzeigen
Es gibt verschiedene Tools wie beispielsweise Jvisualvm oder jhat. Die besten Ergebnisse habe ich mit dem Eclipse Memory Analyser erziehlt. Nach der Installation ist es wichtig, dass dem Tool in der Datei MemoryAnalyzer.ini genug Hauptspeicher und ggf. auch das richtige JDK zugewiesen wird. Es wird erwartungsgemäß ein angepasstes Eclipse gestartet. Nach dem Öffnen des Dumps arbeitet die IDE einige Zeit. Im "Getting Started Wizzard" kann zwischen verschiedenen Reporten gewählt werden. Ein guter Einstiegt ist der "Leak Suspects Report". Nach Auswahl des Reports kannst du den Wizzard beenden und Eclipse sein Arbeit machen lassen. Ja nach Größe des Dumps kann dies etwas dauern. Um den Speicherverbrauch der einzelnen Datenstrukturen zu sehen, auf einen Teil der angezeigten "Torte" klicken und "Dominator Tree" wählen. In der angezeigten Tree Table kann gut geprüft werden wer wieviel Speicher konsumiert.Fragen und Anmerkungen
Für Fragen und Anmerkungen sendet mir gerne eine eMail. Wegen der DSGVO habe ich derzeit die Kommentarfunktionen abgestellt.Posted at 11:11vorm. Okt. 29, 2019 by Arndt in JEE / Wildfly |
Kommentare: