JVM Crash一般会生成core.pid文件和hs_err_pidXXXX.log。
打开hs_err_pidXXXX.log文件 一般有如下内容:
A fatal error has been detected by the Java Runtime Environment:
#
# SIGBUS (0x7) at pc=0x00007fb7006c6f31, pid=8864, tid=140421610395392
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) 64-Bit Server VM (16.3-b01 mixed mode linux-amd64 )
# Problematic frame:
# C [libzip.so+0xaf31]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
其中红色标识的C表示执行Native code的时候出现问题。
查找C [libzip.so+0xaf31]
可以看到其下部分提示如下:
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J java.util.zip.ZipFile.getEntry(JLjava/lang/String;Z)J
J sun.misc.URLClassPath$JarLoader.getResource(Ljava/lang/String;Z)Lsun/misc/Resource;
J sun.misc.URLClassPath$JarLoader.findResource(Ljava/lang/String;Z)Ljava/net/URL;
j sun.misc.URLClassPath$1.next()Z+42
j sun.misc.URLClassPath$1.hasMoreElements()Z+1
j java.net.URLClassLoader$3$1.run()Ljava/lang/Object;+7
v ~StubRoutines::call_stub
j java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0
j java.net.URLClassLoader$3.next()Z+24
j java.net.URLClassLoader$3.hasMoreElements()Z+1
j sun.misc.CompoundEnumeration.next()Z+33
j sun.misc.CompoundEnumeration.hasMoreElements()Z+1
j org.apache.hadoop.mapred.JobConf.findContainingJar(Ljava/lang/Class;)Ljava/lang/String;+42
j org.apache.hadoop.mapred.JobConf.setJarByClass(Ljava/lang/Class;)V+1
j org.apache.hadoop.mapreduce.Job.setJarByClass(Ljava/lang/Class;)V+5
j com.panguso.recommend.mapred.usermodel.task.UserModelTask.run()V+53
j com.panguso.recommend.common.mission.AbstractMission.unitJob()V+198
j com.panguso.recommend.common.mission.AbstractMission.access$100(Lcom/panguso/recommend/common/mission/AbstractMission;)V+1
j com.panguso.recommend.common.mission.AbstractMission$1.run()V+39
j java.util.TimerThread.mainLoop()V+221
j java.util.TimerThread.run()V+1
v ~StubRoutines::call_stub
定位到自己的代码,发现代码没有问题。则定位到jar包。想到jar在运行时发生过替换。断定可能由于替换导致程序发生变化,使得JVM找不到相关代码出现问题。
确认阶段:查看相关类似问题,在https://forums.oracle.com/forums/thread.jspa?threadID=1540064发现一个类似问题。通过答复可以确认此问题由无法访问到相关jar或原类产生。
至此,问题定位。原因也明了了。
总结一下:JVM crash后 ,避免查看core.pid文件。直接分析hs_error_pidXXXX.log文件。通过其中的异常信息定位分析原因,断定可能的问题点,分析验证即可。
还可参见:http://www.oracle.com/technetwork/java/javase/crashes-137240.html
分享到:
相关推荐
NULL 博文链接:https://myspace1916.iteye.com/blog/1441465
本篇文章主要介绍了jvm crash的崩溃日志详细分析及注意点。具有很好的参考价值,下面跟着小编一起来看下吧
这是一个jvm crash分析工具,主要分析jvm crash的原因,以及常见的解决手段
NULL 博文链接:https://txyly998.iteye.com/blog/1264721
Crash崩溃日志
Cache、Perf Data、Crash 分析方法、转储分析方法、 垃圾收集器的设计演进、CMS 和 G1 收集器、栈、JVM 对硬件寄存器的利用、栈顶缓存技术、解释器、字节 码表、转发表、Stubs、Code Cache、Code 生成器、JIT 编译器...
Klass对象表示系统、链接、运行时数据区、方法区、常量池和常量池Cache、Perf Data、Crash分析方法、转储分析方法、垃圾收集器的设计演进、CMS和G1收集器、栈、JVM对硬件寄存器的利用、栈顶缓存技术、解释器、字节...
虚拟机问题分析 crash文件分析 性能调优
资源概述:1,性能问题分析;2,压力测试&调优 内容导语: 01-性能优化的终极目标是什么? 用户体验 = 产品设计(非技术) + 系统性能 ≈ 系统性能 = 快?...移动端:端到端响应时间、Crash率、内存使用率、FPS...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...
JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...