Я столкнулся с нижеприведенным исключением во время выполнения команды ниже
jmap -dump:format=b,file=heap_dump.bin <process_id>
выход:
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: 1.7.0_45
VM_OPTs:
-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=1500
-XX:G1HeapRegionSize=2 -XX:+PrintFlagsFinal -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2
Оборудование: RHEL 5.x, 4-ядерный процессор Linux Linux 6 ГБ оперативной памяти
В соответствии с базой данных отчета об ошибках оракула (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6882554), эта проблема была исправлена, но я все еще получаю версию jdk 1.7 с построить нет: 45
Можете ли вы предложить какое-либо решение, кроме обновления на Jdk 1.8, что невозможно в моем случае из-за других зависимостей?
EDIT:
Я пробовал с командой ниже, и эта команда тоже не работает (сгенерированный файл частичного дампа) и показывает тот же преждевременный EOF.
jmap -J-d64 -dump:format=b,file=<filename> <pid>
Я вызвал команду с пользователем, который начал процесс. У этого пользователя были права на запись в каталог. Файл был создан, но он был неполным.
Файл с 9 МБ был написан для кучи 2 ГБ, что невозможно использовать для анализа.