2019-12-02记录一次简单的线上jvm内存满了的原因查找

在看大佬的操作下学习了一次分析dump文件。

以前没遇到过线上内存满了的情况,虽然看过jvm的知识点,但是没实际操作过。

情况是这样的,下午同事突然说线上服务内存满了,打开公司的大盘监控一看,果然,有一个服务的两台机器内存都达到了98%左右,一直居高不下,这样下去服务的内存肯定回溢出的,一方面得紧急处理,一方面当然要找原因。

我们在服务器上使用top找出(pid在大盘上就可以看到,也可以用命令找出最大内存的进程),top -H -p <pid>找出进程下的线程使用内存情况,趁没满的时候,通知了运维,让运维在两台机器上生成了dump文件(通过线程id),然后重启服务,对,就是简单的重启这就是最有效的紧急处理,哈哈哈,然后运维发送了dump文件给我们,接下来就是开始分析找出为什么内存这么高的原因。

首先要利其器,下载安装memoryAnalyzer,这个是eclipse的一个插件,但是也可以单独来用。

地址:http://www.eclipse.org/mat/downloads.php

下载好解压出来一个mat的程序,然后右键显示包内容

打开MacOS,运行MemoryAnalyzer

当然如果你的dump文件太大,几个g的,你可以在eclipse文件夹里有ini文件可以配置内存。

运行好之后软件就打开了

然后选择你要打开的文件(open heap dump)

打开之后就有一栏功能,下面有这个饼图

饼图下面会有这种分析出来内存占用大的几个主要问题点,点击see stacktrace。 

 就有显示这种内存栈,跟我们平时报错的信息一样,通过看这个就能找到哪个类导致内存满了。

参考:https://blog.csdn.net/ybxywz/article/details/81907396

查看进程一个进程下的线程内存排行:https://www.cnblogs.com/EasonJim/p/8098217.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值