linux线程引起jvm崩溃,JVM宕机分析

1、可以引发JVM崩溃的常见缘由有:linux

线程阻塞数据库

CPU 使用率太高服务器

JVM Crash工具

堆内存不足google

类装载spa

Java虚拟机自身的Bug操作系统

JDK与服务器(CPU、内存、操做系统)的兼容性.net

内存溢出插件

2、日志文件

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堆中对象使用状况,这种文件须要相应的工具进行分析。这类文件最重要的做用就是分析系统中是否存在内存溢出的状况。

3、宕机分析

宕机的时候一定会产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文件分析:

0da52d0b826d45108bd28c36.html

由上图可见,引发javacore的缘由是由于内存溢出,但其进程中的线程并未出现明细的异常,见

下图的线程状态分析。

0da52d0b826d45108bd28c36.html

引发javacore的线程以下所示:

0da52d0b826d45108bd28c36.html

该线程异常以下:

0da52d0b826d45108bd28c36.html

因而可知,由于内存不足致使了内存溢出,程序不存在异常,那么接下来经过分析dump来查看内存状况,见下图:

0da52d0b826d45108bd28c36.html

0da52d0b826d45108bd28c36.html

经过上述的dump文件的分析,咱们获得内存的可能泄露点有两个,都是占用了比较大的内存,经过分析内存泄露点来找到解决办法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ie9 Flash内容无法显示

Flash 插件(Shockwave Flash Object)启用: 在IE9页面右上角单击设置按钮,打开“管理加载项”。 查看一下 Shockwave Flash Object 的状态。如果被真被禁用了,将其选中,然后右击,选择“启用”。 ActiveX 筛选关闭&#…

02 检索数据

1.SELECT语句 从一个表或多个表中检索信息 2.检索单个列 输入: SELECT prod_name FROM Products; 输出: 没有过滤,也没有排序,输出数据顺序可能不同。 3.检索多个列 输入: SELECT prod_id, prod_name, prod_price F…

linux登录界面主题,Ubuntu 12.10登录界面主题:Butterfly

一款Ubuntu 12.10登录界面主题:Butterfly。A green MDM theme with faces for 4:3 aspect ratio screen resolutions such as 1024x768, 1280x960 or 1600x1200.Replace background.jpg with background_1280x1024.jpg for SXGA monitors.License RestoredThis MDM …

前端学习(2183):tabber--基本架构的构建

app.vue <template><div id"app"><div id"tab"><div class"tab-bar-item">首页</div><div class"tab-bar-item">分类</div><div class"tab-bar-item">购物车</div>…

spring 下载地址

下载地址&#xff1a;http://www.springsource.org/download/

拦截器 过滤器 监听器 的区别

面试的时候突然被问了这么个问题 本来知道点啥的 脑子一热 啥也没说出来总结一下 以下内容均摘自网络 但是 读完之后 应该会对它们有更清晰的认识。1.1 什么是拦截器&#xff1a; 拦截器&#xff0c;在AOP&#xff08;Aspect-Oriented Programming&#xff09;中用于在某…

linux查看命令类型,查看linux命令类型

LINUX 虚拟机克隆与网络配置虚拟机克隆后,启动之后发现网卡没有启动.发现提示错误信息“Device eth0 does not seem to be present, delaying initialization.” 解决方法 ...Hibernate之mappedByHibernate之mappedBy 摘要: 一.mappedBy单向关系不需要设置该属性,双向关系必须设…

WCF Rest Service

VS2010——新建项目——联机模板——WCF REST Service Template 40(CS) url路由控制&#xff1a;实现/Service1访问Service1类定义的服务----------Web.config<system.webServer> <modules runAllManagedModulesForAllRequests"true"> <add n…

我是服务的执政官-服务发现和注册工具consul简介

服务发现和注册 我们有了两个服务。服务A的IP地址是192.168.0.1&#xff0c;端口9001,服务B的IP地址192.168.0.2&#xff0c;端口9002。我们的客户端需要调用服务A和服务B&#xff0c;我们只需要在配置文件中写上服务A和服务B的IP地址即可。 此时&#xff0c;服务A的服务器负载…

什么linux系统是中文的,什么是Linux系统

Linux系统是一种类似Unix的开源和社区开发的操作系统&#xff0c;适用于计算机&#xff0c;服务器&#xff0c;大型机&#xff0c;移动设备和嵌入式设备&#xff0c;已成为最广泛支持的操作系统之一&#xff0c;接下来在文章中将为大家详细介绍什么是Linux【推荐课程&#xff1…

IEnumerable.EachTSource(FuncTSource, TSource predicate) 逐个更改列表成员的值

/// <summary> /// 逐个对象执行predicate并获得返回值 /// </summary> /// <typeparam name"TSource"></typeparam> /// <param name"source"></param> /// <param name"…

王嘉廉佳话

叶 烨 王嘉廉创办冠群电脑&#xff0c;打入幸福100家&#xff0c;成为雅虎杨致远之前北美华人首富。王嘉廉八岁时随父母从上海移民美国&#xff0c;年青时就读皇后学院数学系&#xff0c;有时为二毛五午歺费发愁&#xff0c;但他从没打算打工靠苦力挣钱。 王嘉廉功课一般&#…

SQLServer XML操作

declare x xml,y xmlset x<item><title>姓名 </title></item> select x.query(/item/title)select x.query(/item/title).value(/,nvarchar(100))select D.x.value(./title[1],nvarchar(100)) from x.nodes(/*) as D(x);查询结果&#xff1a; <tit…

0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中&#xff0c;实现Runnable创建多条线程&#xff0c;输出中的结果中会有错误&#xff0c;比如一张票卖了两次&#xff0c;有的票没卖的情况&#xff0c;因为线程对象被多条线程访问&#xff0c;一条线…

我的.Net+SQLServer更新设计

一、备份 备份程序、数据库&#xff08;非常重要&#xff09; 二、更新程序 发布Web/Winform程序&#xff0c;将发布文件夹中需要更新的文件发布到服务器上&#xff0c;这里配置文件如果有修改应该单 独修改&#xff0c;否则不应更新配置文件。 三、更新数据库架构 可以通过VS2…