一、找到java进程id
jps查看当前运行的java进程id
[root@localhost ~]# jps
18354 Jps
9381 Bootstrap
二、找到内存和CPU占用最高的线程pid
1,使用命令top -p <pid> ,显示你的java进程的内存情况,pid是你的java进程号,比如123
2,按H,获取每个线程的内存情况
3,找到内存和cpu占用最高的线程pid,比如15248
4,执行 printf 0x%x 15248 得到 0x3b90 ,此为线程id的十六进制
# 查看java进程
top -p 9381
# 按H显示每个线程的内存
# 按M根据驻留内存大小进行排序
# 按P根据CPU使用百分比大小进行排序
# 打印线程ID的十六进制表示
printf 0x%x 9382
0x24a6
image.png
按H显示每个线程的内存
image.png三、查看堆栈信息
5,执行 jstack 123|grep -A 10 3b90,得到线程堆栈信息中3b90这个线程所在行的后面10行
jstack 9381 | grep -A 10 24a6
6,查看对应的堆栈信息找出可能存在问题的代码
image.png
网友评论