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
分享到:
相关推荐
在Java开发过程中,JVM(Java Virtual ...总之,JVM崩溃日志分析是一个细致的过程,需要结合代码、日志和各种工具来定位问题。通过深入学习和实践,开发者可以更好地理解和处理这类问题,确保Java应用的稳定运行。
分析JVM崩溃日志时,重点是定位问题所在的代码行,了解触发错误的操作,以及查看是否有内存管理问题,如堆溢出或栈溢出。同时,还要检查堆栈跟踪,确定哪些线程或方法在崩溃时刻正在执行,并结合Java堆、方法区、元...
"年轻代GC JVM crash"可能是因为在垃圾回收过程中遇到了严重问题,导致JVM崩溃。这可能是由于以下原因: 1. **内存溢出**:如果年轻代的空间不足以容纳新分配的对象,或者Survivor区无法容纳从Eden区晋升的对象,就...
标题"JVM Crash,生成hs_err_pid.log文件"指的是Java虚拟机在运行过程中遇到了致命问题,导致其终止运行,并自动生成了一个错误日志文件。这个文件通常位于JVM崩溃时的工作目录下,文件名由“hs_err_pid”和进程ID...
这是一个jvm crash分析工具,主要分析jvm crash的原因,以及常见的解决手段。 ## 使用方式 java -jar CrashAnalysis-1.0-SNAPSHOT.jar ${hs_err_pid.log} ${hs_err_pid.log} 是jvm crash后生成的日志。 ## 效果 ...
例如,在JVM crash的情况下,通常会在工作目录下自动生成一个error文件,该文件包含了crash时的详细信息,包括但不限于信号类型、错误码、问题发生的框架及堆栈信息。 在提供的案例中,可以看到JVM crash的日志信息...
Crash崩溃日志
- **Crash文件分析**:当JVM出现异常崩溃时,往往会生成crash文件,通过分析这些文件可以定位到问题发生的具体原因。 - **内存分析**:使用工具如MAT(Memory Analyzer Tool)、VisualVM等分析堆内存和非堆内存的...
本示例代码"crash-dump-analysis"旨在帮助开发者学习如何对Java Crash Dump进行解析和分析,以识别和修复应用中的问题。下面将详细介绍这个领域的关键知识点: 1. **Java虚拟机结构**:理解JVM的内存模型是分析崩溃...
5. **线程快照**:如果JVM在崩溃时能够生成线程快照,那么我们可以看到每个线程的状态(运行、等待、阻塞等),这对于分析死锁和其他多线程问题非常有价值。 解读JVM日志需要一定的经验和技术背景,但借助一些工具...
Cache、Perf Data、Crash 分析方法、转储分析方法、 垃圾收集器的设计演进、CMS 和 G1 收集器、栈、JVM 对硬件寄存器的利用、栈顶缓存技术、解释器、字节 码表、转发表、Stubs、Code Cache、Code 生成器、JIT 编译器...
"CRaSH"可能表示程序出现了异常,通过分析堆栈跟踪,可以找到导致问题的具体代码行。 7. **Java性能优化**: 如果"CRaSH"与性能问题有关,那么了解Java内存模型(堆、栈、方法区等)、垃圾回收机制和性能调优工具...
2. Java 虚拟机(JVM)的故障排除:该指南提供了 JVM 故障排除的方法和步骤,包括 JVM crash 的原因分析、堆栈跟踪的获取、JVM 配置文件的编辑等。 3. Java 应用程序的故障排除:该指南介绍了 Java 应用程序的故障...
通过分析javacore文件可以获取到发生问题时刻JVM的所有线程状态、内存使用情况等关键信息,这对于诊断问题的根本原因非常有帮助,并有助于采取相应的预防措施以避免类似问题再次发生。 #### 三、javacore文件的生成...
Klass对象表示系统、链接、运行时数据区、方法区、常量池和常量池Cache、Perf Data、Crash分析方法、转储分析方法、垃圾收集器的设计演进、CMS和G1收集器、栈、JVM对硬件寄存器的利用、栈顶缓存技术、解释器、字节...
在 WebSphere Application Server 中,javacore 文件可以帮助我们分析和判断一些故障,如:100% CPU Usage、Crash、Hang/Performance 问题。 需要注意的是,在某些情况下,javacore 文件可能不能正常产生,可能是...
它支持JMX(Java Management Extensions),可以与JVM管理工具集成,提供实时监控和性能分析。 2. **SSH集成**:CRaSH与SSH紧密结合,使得用户能够安全地通过SSH连接到运行中的Java应用,并执行自定义命令,进行...
首先,"cash"可能是笔误,正确的术语应该是“crash”,意为程序崩溃。Java应用崩溃通常与内存问题、线程死锁、错误的代码实现或不兼容的库有关。在JDK 1.8中,JVM(Java虚拟机)可能会由于以下原因出现奔溃: 1. **...