Top 查看服务 Res占用较高排查

本文描述了在Linux服务器上通过`linuxTop`发现服务内存占用高的问题,通过`jmap`和`jstack`获取堆栈信息,使用MAT工具分析,最终确定是项目中大量final修饰的对象导致内存泄漏。
摘要由CSDN通过智能技术生成

问题发现:
通过linux Top命令查看服务状态发现某个服务占用内存较高,因为服务器资源较少,所以导致服务器卡顿。

问题排查:
1. 通过jmap命令导出该java进程的堆栈信息
jmap -F -dump:format=b,file=devops_dump.bin 298452
2. 通过jstack 命令导出服务线程栈信息备用
jstack 298452 > devops_jstack.log
3. 通过mat 工具分析导出的dump文件

关于mat的使用,我在另一篇文章中也有过说明 记一次JVM内存泄漏问题排查、分析过程_jvm分析工具分析是否内存泄漏步骤-CSDN博客

我们如果排查内存泄漏原因,可以直接通过 Leak Suspects来分析,一般通过List objects中两个选项就能追踪到。

with incoming references:直接引用了当前对象的对象,每个对象的 incoming references 可能有 0 到多个。
with outGoing references:对象引用的外部对象(注意不包含对象的基本类型属性。基本属性内容可在 inspector 查看)。

最后发现,是因为项目中有个定时巡检中存在大量的final修饰对象,一些变量也用了final修饰,导致对象一直创建未释放,从而内存会慢慢增高不释放。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值