Java进程占用系统内存较高的排查方法

Java进程占用系统内存较高的排查方法

1、通过top 查看具体是哪个进程占用内存较多

 

 

 

2、定位线程问题(通过命令查看PID 为25894 进程的线程情况),命令:# ps p 25894 -L -o pcpu,pmem,pid,tid,time,tname,cmd

 

 

 

由此可以看到这个PID:25894的进程产生了很多线程。接下来就可以通过jstack查看内存使用的堆栈,具体可以执行 ps p 25894 -L -o pcpu,pmem,pid,tid,time,tname,cmd |wc -l 来查具体有多少线程. 

3、将PID为25894的堆栈信息打印到jstack.log中,命令: #jstack -l 25894 > jstack.log

4、查看日志,有很多WAITING & TIMED_WAITING 状态的日志信息,具体需要研发查看一下代码的情况;

 

 

 后经研发检查代码并升级程序至新版本,问题解决。  

参考链接:https://www.javatang.com/archives/2017/10/25/36441958.html#TIMED_WAITING  

posted @ 2020-03-12 15:50  一人一见  阅读(1143)  评论(0)    收藏  举报