クライアントの運用サーバー ヒープを調べて、メモリ リークを検出して解決しています。このために、定期的に jmap を使用して必要な情報を収集しています。
しかし先週は、EOF エラーを引き起こし、Tomcat インスタンスをシャットダウンしたため、ダンプを取得できませんでした。
インターネットで検索しましたが、このエラーに関する具体的な情報は見つかりませんでした。Gc First
ガベージ コレクター アルゴリズムを使用している場合にのみ発生することがわかりました。
これは、jmap を実行するために使用したコマンド ラインです。
jmap -dump:format=b,file=heap.bin <PID>
サーバー上の Java バージョン: JDK 1.7.0_7 x64
誰かがすでにこの種のエラーに直面していますか? 構成が欠落しているか、java/jmap へのパッチが必要な可能性があります。
アップデート
このエラーに関して収集したその他の情報:
[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以上の空き容量があります
catalina.out に出力されるエラー (JVM ダンプ エラー):
# 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