分析java线程占用cpu或者内存高的代码
1、通过top查看占用cpu或者内存高的进程(然后按下大写P会以cpu从大到小排序,大写M以内存大小排序)
2、通过对应的cpu找到PID也就是进程对应的pid,例如pid=19485
3、通过命令top -Hp PID 例如top -Hp 19485就可以列出该进程下的所有线程id
4、通过输出大写的P查看线程占用cpu最高的或者通过大写M查看内存占用最高的,然后找到19530这个线程id
5、使用命令printf “%x\n” 19530输出线程id对应的十六进制码,1ab4f这个码是为了过滤线程id查到对应的代码
6、使用命令jstack PID|grep 4c4a【jstack 19485|grep 4c4a 备注PID是进程的id,4c4a是这个进程下的一个占用最高cpu的线程id对应的十六进制码】
7、通过上面的输出找出对应的消耗CPU的代码。jstack 19485|grep 4c4a