Error de volcado de almacenamiento dinámico de Java con el comando jmap: EOF prematuro
He encontrado la siguiente excepción durante la ejecución del siguiente comando
jmap -dump:format=b,file=heap_dump.bin <process_id>
salida:
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)
Versión JDK: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, CPU de 4 núcleos, máquina Linux, 6 GB de RAM
Según la base de datos de informes de errores de Oracle (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6882554), este problema se ha solucionado pero todavía obtengo la versión 1.7 de jdk con el número de compilación: 45
¿Puede sugerir alguna otra solución que no sea actualizar a Jdk 1.8, que no es posible en mi caso debido a otras dependencias?
EDITAR:
He intentado con el siguiente comando y este comando tampoco funciona (archivo de volcado parcial generado) y muestra el mismo EOF prematuro.
jmap -J-d64 -dump:format=b,file=<filename> <pid>
He activado el comando con el usuario, que inició el proceso. Ese usuario tenía permisos de escritura en el directorio. El archivo fue generado pero estaba incompleto.
9 MB el archivo fue escrito para2 GB montón, que no se puede utilizar para el análisis.