文档章节

一次OOM的排查过程

耀子
 耀子
发布于 2016/07/12 10:29
字数 369
阅读 70
收藏 3

最近测试环境的Java应用经常挂掉,用jconsole查看堆内存使用情况,如下图:

堆内存使用量

在达到高峰的时候tomcat服务挂了,看图可以知道使用内存过大,于是开始追踪元凶。

  1. 加入启动参数 在catalina.sh加入-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/web/tomcat7/temp/oom.hprof 第一个参数是当发生OOM是生成heap dump文件,第二个参数是指定文件路径
  2. MAT工具分析 将生成的oom.hprof载入MAT进行分析(MAT工具下载地址:迅雷下载链接),如下图:

MAT分析图

工具怎么使用在此不讲了,参考官网wiki介绍。 点击图中Reports 下的 Leak Suspects,这里会列出了工具怀疑的内存泄露点,不过工具怀疑的也未必真的是存在的,但提供了一种参考。如下图:

怀疑的内存泄露点

图中怀疑内存泄漏点有四处,点击图中第一处的details查看详细情况,如下图:

内存泄露点1

从图中可以看到一个ArrayList有240097个对象引用没有释放掉,这才是导致OOM的原因,再查看报告中的Thread Stack,找到具体代码所在处,如下图:Thread Stack 经过排查,原来是程序代码一次性从数据库加载了全部的数据,没有分页导致的,修改完代码后一切正常了~~

© 著作权归作者所有

共有 人打赏支持
耀子
粉丝 6
博文 29
码字总数 4647
作品 0
东城
程序员
私信 提问
netty 堆外内存泄露排查思路

这篇文章对于排查使用了 netty 引发的堆外内存泄露问题,有一定的通用性,希望对你有所启发 背景 最近在做一个基于 websocket 的长连中间件,服务端使用实现了 socket.io 协议(基于websock...

匠心零度
09/19
0
0
netty 堆外内存泄露排查盛宴

点击上方“闪电侠的博客”,关注公众号 纯技术干货文章第一时间送达! 这篇文章对于排查使用了 netty 引发的堆外内存泄露问题,有一定的通用性,希望对你有所启发 背景 最近在做一个基于 we...

闪电侠的博客
09/04
0
0
在MySQL 5.7下排查内存泄露和OOM问题全过程

0、导读 我的个人网站后台使用的是MySQL 5.7版本,前段时间经常被oom-kill,借助5.7的新特性,经过一番排查,终于抓到这只鬼。 1、问题现象 我的网站前段时间经常时不时就抽风一下,提示数据...

iMySQL | 老叶茶馆
2017/03/27
0
0
深入JVM内核——原理、诊断与优化——常用JVM配置参数

java 获取内存dump 的几种方式 1、获取内存详情:jmap -dump:format=b,file=e.bin pid 这种方式可以用 jvisualvm.exe 进行内存分析,或者采用 Eclipse Memory Analysis Tools (MAT)这个工具 ...

安小乐
03/21
0
0
SpringCloud学习之sleuth&zipkin

一。调用链跟踪的必要性   首先我们简单来看一下下单到支付的过程,别的不多说,在业务复杂的时候往往服务会一层接一层的调用,当某一服务环节出现响应缓慢时会影响整个服务的响应速度,由...

java~nick
03/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决

服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"'......

honeymose
今天
1
0
apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
6
0
day152-2018-11-19-英语流利阅读

“超级食物”竟然是营销噱头? Daniel 2018-11-19 1.今日导读 近几年来,超级食物 superfoods 开始逐渐走红。不难发现,越来越多的轻食餐厅也在不断推出以超级食物为主打食材的健康料理,像是...

飞鱼说编程
今天
12
0
SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
4
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部