Garbage Collector First and JMap EOF bug

时光怂恿深爱的人放手 提交于 2019-12-20 14:13:32

问题


We are working over our client's production server heap to detect and solve memory leaks. For this we are using jmap periodically to collect the necessary information.

But last week we couldn't take the dump, because it triggered a EOF error and shutdown the Tomcat instance.

I searched on the internet but couldn't find any concrete information about this error. We detected that it only occurs when using the Gc First garbage collector algorithm.

This is the command line we used to perform the jmap:

jmap -dump:format=b,file=heap.bin <PID>

Java version on the server: JDK 1.7.0_7 x64

Has anyone already faced this kind of error? Maybe some configuration that is missing or a patch to java/jmap required.

UPDATE

A few more information that we have collected about this error:

[root]# jmap -dump:format=b,file=heap.bin 7806
    Dumping heap to /tmp/heap.bin ...
    Exception in thread "main" java.io.IOException: Premature EOF
        at sun.tools.attach.HotSpotVirtualMachine.readInt(HotSpotVirtualMachine.java:244)
        at sun.tools.attach.LinuxVirtualMachine.execute(LinuxVirtualMachine.java:193)
        at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:213)
        at sun.tools.attach.HotSpotVirtualMachine.dumpHeap(HotSpotVirtualMachine.java:180)
        at sun.tools.jmap.JMap.dump(JMap.java:241)
        at sun.tools.jmap.JMap.main(JMap.java:140)
[root]#

Note: the target directory has over 500gb of free space

Error outputed to the catalina.out (JVM dump error):

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f0269cc41c6, pid=7806, tid=139647231129360
#
# JRE version: Java(TM) SE Runtime Environment (7.0_40-b43) (build 1.7.0_40-b43)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.0-b56 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x58c1c6]  DumperSupport::dump_field_value(DumpWriter*, char, unsigned char*)+0x1c6
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /opt/tomcat6/bin/hs_err_pid7806.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp

回答1:


I could able to resolve the issue by using a few additional options.

java version "1.7.0_45".

Java process was configured with first garbage collection algorithm: -XX:+UseG1GC

jmap -J-d64 -dump:live,format=b,file=<heap_dump_filename> <PID>


来源:https://stackoverflow.com/questions/20571004/garbage-collector-first-and-jmap-eof-bug

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!