在优化程序前,我们需要分析linux线上环境java程序cpu或内存占用的情况,来排查一下到底是哪里有问题。
1.首先查看占用内存占用排行
使用top 命令
2.查看此进程中占用CPU较高的线程排行
ps -mp PID(这里替换) -o THREAD,tid,time|sort -rn|head -n 20
从这里可以看出线程21154占用内存最高,我们继续。
3.将此线程id转换成16进制,为我们接下来的操作做准备。
printf "%x\n" tid
4.用jstack查看一下
jstack pid|grep tid-A 30
看出来这是tomcat的线程。
5.使用jstat命令查看进程的内存情况
jstat -gcutil 14063 2000 10