自己开发的java 程序,运行几个小时后CPU暴涨到100%,重启应用后恢复正常,但过几个小时问题依旧爆发。怀疑是程序里面出现了死循环。因为程序中有几个定时自动执行的任务,问题很可能就出现在这里。接下来是怎么定位问题点了,linux 系统:
1. 用top 命令查看占用资源最多PID(进程):
可以看出占cpu最大的pid 是1020
2.根据进程的PID查看执行时间最长的TID(线程ID):ps -mp 1020 -o THREAD,tid,time;
可以看出占cpu最大的TID 是 1084
3.将TID转换成16进制打印:printf "x%\n" TID (设转换后的值为HTID)
4.jstack PID|grep -i HTID -A 30
交给程序员去处理程序中的bug ,扣其一个鸡腿!