# Linux 系统CPU过高定位分析异常应用Java程序
### 1.通过htop找异常Java进程,占用CPU最高的java进程ID

### 2.通过下面命令进步一步定位出了问题的后台进程
```
jps -l
ps -ef|grep java|grep -v grep
```
### 3.定位到具体线程或者代码
```
ps -mp 进程pid -o THEAD,tid(线程ID),time
ps -mp 29037 -o THREAD,tid,time
```
- -m 显示所有的线程
- -p pid 进程使用cpu的时间
- -o 该参数后是用户自定义格式
通过查看进程的线程CPU使用率,取出TID线程ID

### 4.将需要的线程ID转换为16进制格式(英文小写格式)
输入命令十进制转十六进制: printf "%x\n" 有问题的线程ID
```
printf "%x\n" 5012
```
或者通过计算器
5012 转换为十六进制获得13ee 英文必须的小写,calc 打开计算器

### 5.通过jstack获取该线程具体运行信息,只要找自己代码的中的类即可
```
jstack 进制ID | grep tid(16进制线程ID小写英文) -A60
jstack 10627 | grep 13ee -A60
```

生产系统突然崩溃,产品经理声称要拿程序员祭天!