内存溢出+CPU占用过高排查解决方案

本文介绍了如何排查和解决Java应用中的内存溢出问题。通过使用`top`命令定位高CPU进程,结合`jstack`和`jmap`工具深入分析线程和堆内存状态,以及利用`jstat`监控GC频率。此外,还提到了使用Eclipse Memory Analysis Tool(MAT)对dump文件进行分析的方法,帮助初学者理解并解决此类问题。

前言

这段时间以来都没有写过文章了,以为要换工作的原因,所以一直在为面试做准备,面试了几家收到了4个offer,连我也不知道什么时候这么抢手了,后来选择了一家做医疗的大公司工作,废话不多说,今天开始陆续写文章。

这里不说其他的,只说内存的溢出以及怎么排查,这也是面试会被面试官问到的问题。以下的方式适合初学者。

定位问题

top命令查看最耗CPU的进程

这里输入top 命令之后键入大写的 P ,进程按照 CPU 从高到底排序。

在这里插入图片描述
查看最消耗 CPU 的线程,比如一下这个进程:
在这里插入图片描述

1612 为进程号,键入大写 P,该进程中的线程按照 CPU 从高到底排序
top -Hp 1612
在这里插入图片描述

将上面线程号 31467 转为 16 进制,如下:

将线程号转为 16 进制;其中 31467 为线程号
printf ‘%x\n’ 31467
29962 为进程号,0x7aeb 为最耗 CPU 线程的十六进制
jstack 29962 | grep ‘0x7aeb’ -C10 --color

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值