I have encountered below exception during execution of below command
jmap -dump:format=b,file=heap_dump.bin <process_id>
output:
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 core CPU Linux machine 6 GB RAM
As per oracle bug report database ( http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6882554), this issue has been fixed state but I am still getting jdk 1.7 version with build no:45
Can you suggest any solution other than upgrading to Jdk 1.8, which is not possible in my case due to other dependencies?
EDIT:
I have tried with below command and this command too does not work (generated partial dump file) and shows same Premature EOF.
jmap -J-d64 -dump:format=b,file=<filename> <pid>
I have triggered the command with the user, who started the process. That user had write permissions to the directory. The file was generated but it was incomplete.
9 MB file was written for 2 GB heap, which is not usable for analysis.
Brian's comment is helpful to resolve the issue.
If you are using G1GC
algorithm in 64 bit machine:
Below command does not work ( excluding live
option)
jmap -J-d64 -dump:format=b,file=<heap_dump_filename> <pid>
you have to use below option to get the heap dump
jmap -J-d64 -dump:live,format=b,file=<heap_dump_filename> <PID>
There are some suggestions to use -F
option to force heap dump but as per oracle technotes:
-F Force. Use with jmap -dump or jmap -histo option if the pid does not respond. The live suboption is not supported in this mode.
Since heap dump is required with G1GC option, above option can't be used.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With