Mik*_*nov 27 java crash jvm jvm-crash
一天前,经过几个月的正常工作,我们的java应用程序偶尔会崩溃并出现以下错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (safepoint.cpp:247), pid=2075, tid=140042095163136
# guarantee(PageArmed == 0) failed: invariant
#
# JRE version: 6.0_23-b05
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.0-b09 mixed mode linux-amd64 compressed oops)
# An error report file with more information is saved as:
# /var/chat/jSocketer/build/hs_err_pid2075.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Run Code Online (Sandbox Code Playgroud)
我查看了hs_err_pid2075.log,看到有一个活动线程处理网络通信.但是,在过去几个月中没有进行任何应用程序或环境更改.也没有任何负载增长.我该怎么做才能理解,崩溃的原因是什么?是否有任何常见的步骤来调查jvm崩溃?
崩溃发生在JVM中,而不是外部本机代码中.但是,它崩溃的操作已由外部DLL启动.
hs_err_pid文件中的这一行解释了崩溃的操作:
VM_Operation (0x00007f5e16e35450): GetAllStackTraces, mode: safepoint, requested by thread 0x0000000040796000
Run Code Online (Sandbox Code Playgroud)
现在,线程0x0000000040796000是
0x0000000040796000 JavaThread "YJPAgent-Telemetry" daemon [_thread_blocked, id=2115, stack(0x00007f5e16d36000,0x00007f5e16e37000)]
Run Code Online (Sandbox Code Playgroud)
这是由Yourkit创建的线程."GetAllStackTraces"是探查器为了进行采样而需要调用的东西.如果删除分析器,则不会发生崩溃.
使用此信息无法说明导致崩溃的原因,但您可以尝试以下操作:删除所有-XX VM参数,-verbose:gc和调试VM参数.它们可能会干扰JVM的分析界面.
更新
调用java.lang.Thread#getAllStackTraces()或java.lang.Thread#getStackTrace()可能触发相同崩溃的代码
| 归档时间: |
|
| 查看次数: |
22399 次 |
| 最近记录: |