实战CPU过高问题定位
一.top+jstack
1.top(十进制)
2. 另起一个窗口 执行 top -Hp 36032命令
下面的信息是该线程号里面所有的线程
3.执行 printf %x 36044命令,转换为16进制(占用内存最高的线程)
4.执行 jstack 36032 >1.txt (十六进制)
5. cat 1.txt |grep -A 30 8ccc: 查看8ccc这个进程,并向后再看30行
二. 可能导致CPU占用率过高的场景与解决方案-1
无限while循环:尽量无限循环,让循环执行得慢一点
频繁GC降低GC频率
频繁创建对象 合理运用单利
序列化和反序列化:使用合理的API实现功能
正则表达式:
频繁的线程的上下文切换: