Java Heap-Dump erzwingen

Wer es mal brauchen sollte, einen Heap-Dump eines Java-Prozesses unter z. B. UBUNTU auf der Kommandozeile zu erhalten: Dazu muss ein Kernel-Parameter temporär auf ‚0‘ gesetzt werden. Als Tante ‚root‘ führt man folgendes aus:

‚echo „0“ > /proc/sys/kernel/yama/ptrace_scope‘.

Dann klappt auch unser Heap-Dump auf Kommandozeile:

‚jmap -F –dump:format=b,file=/tmp/XXXXXX.hprof <PID>‘

Ansonsten, wenn man nicht auf ein Terminal angewiesen ist, kann man z. B. die jconsole zu einem Heap-Dump veranlassen. Aber nicht vergessen, die Datei heißt so, wie der erste String-Parameter des Funktionsaufrufes. Das ist Default „String“ 🙂

jconsole_heapdump

Sucht man die PID laufender Java-Prozesse, kann man ‚jps‘ benutzen. Für Startparameter und anderes kommt ‚jinfo <PID>‘ zum Einsatz. Diese ‚unsupported‘ Tools sind im JDK enthalten.