前言
这段时间以来都没有写过文章了,以为要换工作的原因,所以一直在为面试做准备,面试了几家收到了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

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

被折叠的 条评论
为什么被折叠?



