Java-Heap-Dump-Fehler mit dem Befehl jmap: Vorzeitiges EOF
Ich bin auf die folgende Ausnahme gestoßen, als der folgende Befehl ausgeführt wurde
jmap -dump:format=b,file=heap_dump.bin <process_id>
Ausgabe
Dumping heap to <file_name>
Exception in thread "main" java.io.IOException: Premature EOF
at sun.tools.attach.HotSpotVirtualMachine.readInt(HotSpotVirtualMachine.java:248)
at sun.tools.attach.LinuxVirtualMachine.execute(LinuxVirtualMachine.java:199)
at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:217)
at sun.tools.attach.HotSpotVirtualMachine.dumpHeap(HotSpotVirtualMachine.java:180)
at sun.tools.jmap.JMap.dump(JMap.java:242)
at sun.tools.jmap.JMap.main(JMap.java:140)
JDK Version: 1.7.0_45
VM_OPTs:
-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=1500
-XX:G1HeapRegionSize=2 -XX:+PrintFlagsFinal -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2
Hardware: RHEL 5.x, 4-Kern-CPU-Linux-Maschine 6 GB RAM
Als Oracle Bug Report-Datenbank http: //bugs.java.com/bugdatabase/view_bug.do? bug_id = 6882554), dieses Problem wurde behoben, aber ich erhalte immer noch die jdk 1.7-Version mit Build-Nr .: 45
Können Sie eine andere Lösung als ein Upgrade auf Jdk 1.8 vorschlagen, was in meinem Fall aufgrund anderer Abhängigkeiten nicht möglich ist?
BEARBEITEN
Ich habe es mit dem folgenden Befehl versucht und dieser Befehl funktioniert auch nicht generated partial dump file) und zeigt dasselbe vorzeitige EOF.
jmap -J-d64 -dump:format=b,file=<filename> <pid>
Ich habe den Befehl mit dem Benutzer ausgelöst, der den Prozess gestartet hat. Dieser Benutzer hatte Schreibrechte für das Verzeichnis. Die Datei wurde generiert, war aber unvollständig.
9 MB Datei wurde geschrieben für 2 GB Heap, der nicht für die Analyse verwendet werden kann.