java Cpu占用过高处理

解决三板斧
转三板斧

1、病号是谁?(WHO)

第一步:采用 top 命令,找出 CPU 占用最高的病号 PID ;

第二步:通过 ps -ef | grep PID 查看病号对应的真实身份。

2、病号哪里出了问题?(WHERE)

第一步:采用 jstack -l  PID >> PID.log  获取病号的各器官信息的病历单;

第二步:采用 top -Hp PID 拿到占用 CPU 最高的器官昵称 PID ;

ps:注意该命令只能在linux中使用,而在macOS上不能使用。因为linux将线程作为轻量级进程也分配了pid,而macOS并没有这么处理。

如果通过上述命令我们发现进程中的某个线程指标不正常,想重点关注,这时需要将线程的pid通过下面命令转化为十六进进制,方便在线程快照信息中查找。

第三步:采用 printf "%x\n" PID  根据器官昵称 PID 的拿到器官真实身份 TID ;

第四步:采用 grep TID -A20 pid.log 根据 TID 去病历单中匹配,确定是哪出了问题。

3、捉得病根、便可拿出医药箱,对症下药啦。(HOW)

你可能感兴趣的:(java Cpu占用过高处理)