相关疑难解决方法(0)

使用jmap命令的Java堆转储错误:过早的EOF

我在执行下面的命令时遇到了以下异常

jmap -dump:format=b,file=heap_dump.bin <process_id>
Run Code Online (Sandbox Code Playgroud)

输出:

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)
Run Code Online (Sandbox Code Playgroud)

JDK版本:1.7.0_45

VM_OPT:

-Xms2g -Xmx4g  -XX:+UseG1GC -XX:MaxGCPauseMillis=1500 
-XX:G1HeapRegionSize=2 -XX:+PrintFlagsFinal -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 
Run Code Online (Sandbox Code Playgroud)

硬件:RHEL 5.x,4核CPU Linux机器6 GB RAM

根据oracle bug报告数据库(http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6882554),这个问题已经修复,但我仍然得到jdk 1.7版本,内置编号为:45

除了升级到Jdk 1.8之外,您能否提出任何解决方案,由于其他依赖性,这在我的情况下是不可能的?

编辑:

我已尝试使用以下命令,此命令也不起作用(生成部分转储文件)并显示相同的早期EOF.

jmap -J-d64 -dump:format=b,file=<filename> <pid>
Run Code Online (Sandbox Code Playgroud)

我已经与启动该过程的用户触发了该命令.该用户具有该目录的写权限.该文件已生成但尚未完成.

2 GB堆写入了9 MB文件,该文件无法用于分析.

java heap-memory eof heap-dump

11
推荐指数
1
解决办法
3526
查看次数

标签 统计

eof ×1

heap-dump ×1

heap-memory ×1

java ×1