`
zybing
  • 浏览: 456953 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

程序本来好好的, 做了一次大修改,测试的时候发现在某些场合下,程序突然消失了,检查后发现JVM崩溃了.

 

在运行目录下,生成了一个错误log文件: hs_err_pid26290.log

 

打开看, 能看到一些信息; 同时查了一下网上的一些资料.

 

JVM的崩溃, 在网上找了一下一般以以下几种情况居多:

 

1. 内存不够, 尤其是Heap不够造成的, 具体的例子如:  http://www.zhuoda.org/hofman/66549.html

 

2.JVM编译的时候发生的JVM崩溃, 如: 

 http://seanhe.iteye.com/blog/905997 , 

 http://hi.baidu.com/wzgws/item/60ad0dea9ae6aff6e0a5d476

 

3. GC的时候发生的JVM崩溃, 这个网上最多了.

 

按照资料的情况,对log文件做了分析,

 

log文件的内容包括这几部分:(直接抄网上的, 没用自己的log来分析)

主要日志信息如下:
JVM crash main information:
1.JVM:(1.5.0_17-b04 mixed mode) 
A fatal error has been detected by the Java Runtime Environment:  
2.SIGSEGV (0xb)  
3.libjvm.so+0x48acf3  
4.Java Threads: ( => current thread )
  ComiplerThread [_thread_in_native] 
5.Current CompileTask:
    com.apusic.net.Muxer.acceptConnection(SocketAdaptor paramSocketAdaptor) 
6.Heap的使用情况正常。

 

通过Thread, 可以判断问题出在哪个类型的线程中, 通过Heap可以分析内存使用的情况;

 

分析了自己的log,问题也是出在 CompilerThread0 , 根据Java TroubleShooting Guide的解释(相关部分在http://seanhe.iteye.com/blog/905997中已经给出翻译), 将 相关的方法配制在-XX:CompileCommand中, 问题得以解决;

 

 

还有: 崩溃位置的定义在这个log文件中有说明:

 

Native frames: (

J=compiled Java code,

j=interpreted,

Vv=VM code,

C=native code

)

 

 

 

分享到:
评论

相关推荐

    jvm crash的崩溃日志详细分析及注意点

    另一个重要的参数是`-XX:OnError`,它允许我们在JVM崩溃时执行自定义的命令,比如`pmap %p`用于显示进程的内存映射,或者`gcore %p; dbx - %p`用于生成核心转储并启动调试器。在Linux中,这些命令会在子进程中执行,...

    sigar-amd64-winnt.dll,修复jvm崩溃版本

    此为修复版本,下载后直接使用即可 版本号:1.6.4,大家去下载jar的时候别搞错了!

    sigar1.6.4,jvm崩溃修复版

    在"sigar1.6.4,jvm崩溃修复版"中,它特别针对JVM崩溃问题进行了优化和修复,提升了其在Java环境下的稳定性。 在JVM(Java Virtual Machine)中,崩溃可能由于多种原因,如内存溢出、线程死锁、非法指令或系统资源...

    基于Java平台的JVM崩溃分析工具设计源码

    该项目是一款基于Java平台的JVM崩溃分析工具源码,包含22个文件,其中19个为Java源文件,1个JAR包文件,1个Markdown文件和1个XML文件。该工具专注于分析JVM崩溃原因并提供常见解决方案。

    关于编写Java程序让Jvm崩溃

    在书上看到一个作者提出一个问题“怎样通过编写Java代码让Jvm崩溃”,我看了之后也不懂。带着问题查了一下,百度知道里面有这样一个答案: 1 package jvm; 2 3 public class Crash { 4 public static void main...

    JVM crash 错误日志分析

    首先,我们需要了解JVM崩溃的常见原因。这可能包括内存溢出(Out of Memory Error)、线程死锁、非法指令、系统资源耗尽等。错误日志通常会提供以下几个关键部分的信息: 1. **头部信息**:包含崩溃时JVM的版本、...

    年轻代gc jvm crash

    "年轻代GC JVM crash"可能是因为在垃圾回收过程中遇到了严重问题,导致JVM崩溃。这可能是由于以下原因: 1. **内存溢出**:如果年轻代的空间不足以容纳新分配的对象,或者Survivor区无法容纳从Eden区晋升的对象,就...

    CrashAnalysis-master.zip

    《深入解析JVM崩溃分析与解决方案》 在Java开发领域,JVM(Java Virtual Machine)是执行Java程序的核心。然而,由于各种原因,JVM可能会出现崩溃,这将导致应用程序无法正常运行。"CrashAnalysis-master.zip"是一...

    JVM Crash,生成hs_err_pid.log文件

    这个文件对于开发者来说至关重要,因为它记录了JVM崩溃时的详细信息,包括堆栈跟踪、系统属性、线程信息以及可能的故障原因。 标题"JVM Crash,生成hs_err_pid.log文件"指的是Java虚拟机在运行过程中遇到了致命问题...

    jvm内存分析-jdk17-memoryAnalyer

    使用MAT进行内存分析时,首先需要在JVM崩溃或出现性能问题时捕获.hprof文件,然后用MAT打开并分析。通过MAT的分析结果,可以找到内存占用过多的对象,以及可能导致内存泄漏的引用链。 总结起来,理解JVM内存结构...

    【JAVA WEB实用技巧与优化方案】如何排查JVM线程和内存相关问题

    1. **生成heapdump**:可以通过JVM的`jmap`命令,或者在JVM崩溃时由操作系统的信号触发。 2. **分析heapdump**:IBM的这个工具能解析heapdump,展示内存中的对象数量、大小分布,以及对象间的引用关系。通过查找...

    ha456.jar(IBMHeapAnalyzer)JVM内存分析工具

    这通常是通过在JVM崩溃、挂起或按需时触发堆转储来完成的。在Java应用程序中,可以通过设置JVM参数`-XX:+HeapDumpOnOutOfMemoryError`来配置当出现内存溢出错误时自动创建堆转储。也可以使用`jmap`命令(在JDK工具...

    (三)MATJVM 内存分析工具.MAT JVM 内存分析工具

    在实际使用MAT时,我们需要先获取heap dump文件,这通常可以通过JVM的`jmap`命令或在JVM崩溃时自动生成。然后导入到MAT中,通过上述功能进行分析。例如,我们可能会关注那些有大量实例但没有被释放的类,或者查找...

    使用JNA替代JNI调用DLL,并解决内存溢出问题

    ### 使用JNA替代JNI调用DLL,并解决内存溢出问题 #### 问题背景 在项目的开发过程中,常常遇到需要处理二进制流数据并对其进行解析处理的情况。这种情况下,如果上层应用平台采用的是Java开发,而底层算法或数据...

    java 虚拟机问题分析大全

    这些文件通常包含有核心转储文件(core dump)和日志文件等,是诊断JVM崩溃的重要依据。 ##### 1. 核心转储文件分析 核心转储文件包含了崩溃时刻的完整内存映像,通过对它的分析,可以了解到程序崩溃时的内存状况。...

    IBM内部javacore分析pdf教程文件

    - JVM崩溃可能由多种原因引起,如内存溢出、非法指令等。通过分析javacore文件可以找到导致崩溃的具体线程和代码位置。 - **Hang/Performance Degradation:** - 性能下降或挂起的问题可能是因为线程间的竞争或者...

Global site tag (gtag.js) - Google Analytics