java面试-生产环境出现CPU占用过高,谈谈你的分析思路和定位
思路:结合Linux和JDK命令一起分析
1、用top命令找出CPU占比最高的进程
2、ps -ef|grep java|grep -v grep 或者jps -l进一步定位,得知是怎样一个后台程序惹事
3、定位到具体线程:ps -mp 进程编号 -o THREAD,tid,time
ps -mp 4618 -o THREAD,tid,time -m:显示所有线程 -p pid:进程使用CPU的时间 -o:用户自定义格式
4、将需要的线程ID转换为16进制格式:printf "%x\n" 有问题的线程id
printf "%x\n" 4619
5、jstack 进程ID|grep tid(16进制线程小写英文)-A60
jstack 4618 | grep 120b -A60