大家好,本节主要是讲一下关于线上,我们在linux进行java应用程序针对内存或者CPU增高的原因进行排查的一些实战。
查看java的pid
top
查看pid下的占用高的tid
top -Hp pid
打印tid16进制
printf "%x\n" tid
查看栈 输出到xx.log
jstack pid|grep -A 2000 tid的16进制 > xx.log
查看gc 打印每2000ms输出一次,共10次
jstat -gcutil pid 2000 10
查看堆
jmap pid
jmap -heap pid
# 推荐使用该命令,可以直接观看到运行过程中的变量增长情况
jmap -histo:live pid
# 上述命令,如果打印数据过多,建议加一个 | more ,即可完成分屏查看
...
通过以上的这些操作过程基本可以定位一些CPU高或者内存高的原因。