实战CPU过高问题定位

一.top+jstack

 1.top(十进制)

实战CPU过高问题定位

2. 另起一个窗口 执行 top -Hp 36032命令

下面的信息是该线程号里面所有的线程

实战CPU过高问题定位

3.执行 printf %x 36044命令,转换为16进制(占用内存最高的线程)

实战CPU过高问题定位

4.执行 jstack 36032 >1.txt (十六进制)

5. cat 1.txt |grep -A  30 8ccc: 查看8ccc这个进程,并向后再看30行

实战CPU过高问题定位

二. 可能导致CPU占用率过高的场景与解决方案-1

无限while循环:尽量无限循环,让循环执行得慢一点
频繁GC降低GC频率

频繁创建对象 合理运用单利

序列化和反序列化:使用合理的API实现功能

正则表达式:

频繁的线程的上下文切换: