背景
现在记录这次内存使用已经记不得处于什么问题来排查的了,我是无意之中发现我们的测试环境内存使用率达到70%以上,监控软件已经开始标红,如下:
之前排查过cpu过高的问题,今天看到有个内存标高的现象,心里很是开心,因为平时很少能遇到这种异常,于是开始着手进行分析如下
- 先使用top命令查看是哪个进程占用内存过高
- 先top 后M(P表示按cpu进行排序)内存进行排序
-
top -H -p pid (在linux中查看指定进程的线程的-H参数用法)
观察看这一个进程有多个线程,每个线程占用的内存多差不多为14.9%
3.随便找个线程,看线程堆栈信息
使用 jstack -l 25086 > jstack_25086.log jstack用于打印出给定的java进程ID堆栈信息