在Linux环境下,Java应用程序进程占有CPU使用率过高,需要定位到java程序中所在的线程位置。
1.先查找较高的进程,然后通过top找到具体的线程tid.
top (查看java进程)
top -H -p pid (pid CPU使用较高的java进程)
2. pid格式化为十六进制
printf '%x' tid (打印之后加上0x)
3.通过jstack打印进程的堆栈信息,进行过滤。定位到具体的线程名。
jstack pid|grep tid(格式化后) -C10 --color
最后结合代码具体分析线程占有CPU的使用率居高不下。