1.使用 top 定位到占用CPU高的进程PID
首先查看系统资源占用信息,TOP看一下,发现正在运行的JAVA项目CPU占用率很高,百分之200左右。
2.获取线程信息输出到thread.txt文件,并找到占用CPU高的线程
ps -mp pid -o THREAD,tid,time | sort -rn >thread.txt
可以看到这个进程中有3个线程的CPU占用率很高,并且它们目前也运行了13分钟了,它们的TID分别为16068,16069,16071。
3.将需要的线程ID转换为16进制格式
printf "%x\n" tid
4.jstack查看进程信息
jstack -pid >resylt.txt
5.本地代码问题排查
回到代码中查看getRemovedDateTypeParam方法,此处的代码问题在于:如果paramMap不为空,但dateParamMap为空的,那么程序就会出现死循环。