一、能够引起JVM崩溃的常见原因有:
线程阻塞
CPU 使用率过高
JVM Crash
堆内存不足
类装载
Java虚拟机自身的Bug
JDK与服务器(CPU、内存、操作系统)的兼容性
内存溢出
二、日志文件
hs_err_pid.log,致命错误出现的时候,JVM生成了hs_err_pid.log这样的文件,其中包含了虚拟机崩溃原因的重要信息:
触发致命错误的操作异常或者信号;
版本和配置信息;
触发致命异常的线程详细信息和线程栈;
当前运行的线程列表和它们的状态;
堆的总括信息;
加载的本地库;
命令行参数;
环境变量;
操作系统CPU的详细信息。
JavaCore及HeapDump文件,Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下。有时致命问题发生后,Jvm不会死掉,还能继续运行,但致命问题发生,Jvm进程会死掉,为了能够保留Java应用发生致命错误前的运行状态,JVM在宕掉前产生两个文件,分别为JavaCore及HeapDump文件。
JavaCore文件主要保存的是Java应用各线程在某一时刻的运行的位置,即JVM执行到哪一个类、哪一个方法、哪一个行上。它是一个文本文件,打开后可以看到每一个线程的执行栈,以stack trace的显示。通过对JavaCore文件的分析可以得到应用是否“卡”在某一点上,即在某一点运行的时间太长,例如数据库查询,长期得不到响应,最终导致系统崩溃等情况。
HeapDump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况,这种文件需要相应的工具进行分析。这类文件最重要的作用就是分析系统中是否存在内存溢出的情况。
三、宕机分析
宕机的时候必定会产JavaCore及HeapDump文件,如果未宕机时,想查看Jvm中线程与内存情况,那么在linux下可通过kill -3 进程号来手工产生这两个文件来进行分析。
MAT
Eclipse Memory Analyzer是一个非常好用的分析工具,我们可以利用它的Eclipse 插件轻松实现查看对象树、对象大小、生成报告,甚至自动化分析可能出现泄露的对象, 和其他插件的安装非常类似,MAT 支持两种安装方式,一种是“单机版“的,也就是说用户不必安装 Eclipse IDE 环境,MAT 作为一个独立的 Eclipse RCP 应用运行;另一种是”集成版“的,也就是说 MAT 也可以作为 Eclipse IDE 的一部分,和现有的开发平台集成。
JavaCore文件的头部有一个“Current Thread Details”标记,它记录了JavaCore产生时系统运行的线程id,使用线程id在文件中查找线程的详细信息,该信息中记载了线程运行哪个类的时候造成的JavaCore。
HeapDump文件是指定时刻的Java堆栈的快照,是一种镜像文件。MAT工具通过分析HeapDump文件,哪些对象占用了太多的堆栈空间,来发现导致内存泄露或者可能引起内存泄露的对象。
示例:
javacore文件分析:
由上图可见,引起javacore的原因是因为内存溢出,但其进程中的线程并未出现明细的异常,见
下图的线程状态分析。
引起javacore的线程如下所示:
该线程异常如下:
由此可见,因为内存不足导致了内存溢出,程序不存在异常,那么接下来通过分析dump来查看内存情况,见下图:
通过上述的dump文件的分析,我们得到内存的可能泄露点有两个,都是占用了比较大的内存,通过分析内存泄露点来找到解决办法。
<!--EndFragment-->
相关推荐
在处理WebLogic宕机问题时,我们首先遇到的是与数据库相关的优化问题。在这个场景中,项目组最初认为数据库是问题所在,因为SGA(System Global Area)使用的是默认参数,导致缓冲区命中率低。这可能意味着数据读取...
本文旨在通过分析实际案例来总结WebLogic宕机的原因及应对措施,以期为企业运维人员提供参考。 #### 二、WebLogic宕机概述 WebLogic宕机主要表现为服务器不再响应外部请求,导致应用程序无法正常使用。宕机的原因...
本篇文章将深入探讨基于给定文件名的JVM异常分析主题,包括socket端口占用问题和内存溢出系统异常,以及如何解决这些问题以防止异常宕机。 首先,让我们关注"623scoket端口占有和内存溢出系统异常分析"这个文件。...
JACOB是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。如果你要对 MS Word、Excel 进行处理,JACOB 是一个好的选择。JACOB目前已经成为sourceforge(ht
### 信息系统运行卡顿、宕机的原因分析与初步解决方案 #### 一、硬件层面的问题及解决方案 1. **网络原因**: - **问题描述**:网络带宽不足,包括服务器带宽、客户端带宽以及并发用户的数量。这可能会导致系统...
主要是针对JVM内存溢出,服务器宕机,内存优化,溢出类型进行介绍
此为修复版本,下载后直接使用即可 版本号:1.6.4,大家去下载jar的时候别搞错了!
通过对WebLogic定期宕机现象的具体分析,我们发现内存泄漏是造成此类问题的主要原因之一。通过对代码逻辑的优化、合理的JVM配置调整以及定期审查第三方库等方式,可以有效降低内存泄漏的风险,从而提高系统的稳定性...
Java面试总结,Redis宕机数据丢失解决方案,看完这篇彻底明白了 本文将从四个方面详细讲解Java面试的重要知识点: 一、Java基础知识 1. HashMap的内部结构、内部原理和HashTable的区别 * HashMap的内部结构主要...
1. 对于 jvm_route 模块,可以考虑改进或寻找替代方案,以解决服务器宕机后的会话转移问题。 2. 使用 nginx_upstream_jvm_route 时,务必确保使用兼容的 Nginx 版本,并正确安装和配置。 3. 考虑采用更先进的负载...
### TongWeb快速入门配置及问题快速定位查找手册 #### 1. 应用部署 ##### 1.1 应用部署步骤 ... - 选择“应用”->“应用管理”->“WEB应用”进行...- 若遇到JVM宕机,需要根据错误日志和配置信息进行故障排查和修复。
在 WebSphere Application Server 中,javacore 文件可以帮助我们解决一些问题,如:服务器宕机、性能问题等。在 WebSphere Application Server 中,javacore 文件可以帮助我们分析和判断一些故障,如:100% CPU ...
应用系统本身的优化是至关重要的,否则即使有再大的内存,也会被消耗殆尽,尤其是产生 OOM(Out Of Memory)的错误的时候,它会贪婪地吃掉你的内存空间,直到系统宕机。 在解决生产环境中的性能问题时,需要采用...
即便Zookeeper全部宕机,也不会影响已经运行的服务提供者和消费者,因为他们已经在本地缓存了服务提供者列表。在这种情况下,使用Zookeeper的基本默认配置就足够了。 #### 八、启动JVM参数配置 案例中展示了如何在...
- 磁盘满了导致的问题很难预料,HDFS可能会导致部分数据写入异常,MySQL可能会出现直接宕机等等, 所以最好的办法就是:不要使盘的利用率达到100%。 - 数据存储周期规划好,定期清理数据。或者实现自动化清理。
在WebSphere运行过程中,可能会遇到各种性能问题或宕机情况,这时,分析javacore日志就显得尤为重要。javacore日志是Java虚拟机(JVM)在特定时刻生成的一种诊断文件,它记录了JVM的状态信息,包括线程、内存、类...
内存溢出可能会导致程序崩溃、异常、卡死甚至服务器宕机等严重问题。因此,了解内存溢出的原因和解决方案非常重要。 内存溢出的原因有很多种,以下是常见的几种: 1.内存中加载的数据量过于庞大,如一次从数据库...
在读数据场景中,如果遇到DataNode宕机或数据损坏,HDFS通过DFSInputStream的readWithStrategy()方法进行处理。当读取数据异常时,系统会尝试连接其他可用的DataNode,并对读取的数据进行校验。如果数据校验失败,...
某个大型项目(Use Case 超过 300 个),在项目上线后,其 Web 应用服务器经常宕机。表现为: 1. 应用服务器内存长期不合理占用,内存经常处于高位占用,很难回收到低位; 2. 应用服务器极为不稳定,几乎每两天重新...