垃圾收集器第一和JMap EOF错误 [英] Garbage Collector First and JMap EOF bug

查看:438
本文介绍了垃圾收集器第一和JMap EOF错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在研究客户端的生产服务器堆,以检测和解决内存泄漏问题。为此,我们定期使用jmap来收集必要的信息。

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.

但是上周我们无法进行转储,因为它触发了EOF错误并关闭了Tomcat实例。

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

我在互联网上搜索但未找到有关此错误的任何具体信息。我们检测到只有在使用 Gc First 垃圾收集器算法时才会发生。

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.

这是我们用来执行jmap的命令行:

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

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

服务器上的Java版本:JDK 1.7.0_7 x64

Java version on the server: JDK 1.7.0_7 x64

有没有人遇到过这种错误?可能缺少一些配置或者需要修补java / jmap。

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

更新

我们收集的有关此错误的更多信息:

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]#

注意:目标目录有超过500GB的免费spa ce

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

错误输出到catalina.out(JVM转储错误):

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


推荐答案

我可以通过使用一些其他选项来解决问题。

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


java version1.7.0_45。

java version "1.7.0_45".

Java进程配置了第一个垃圾收集算法: -XX:+ UseG1GC

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

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

这篇关于垃圾收集器第一和JMap EOF错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆