后端问题排查

分析堆内存

1.dump堆内存命令:

jmap -dump:format=b,file= 

无法及时dump,使用下面命令开启自动dump

-XX:+HeapDumpOnOutOfMemoryError

2.使用MAT加载hprof文件

线上CPU打到100%

先进服务器,用top -c 命令找出当前进程的运行列表
按一下 P 可以按照CPU使用率进行排序
显示Java进程 PID 为 2609 的java进程消耗最高
然后我们需要根据PID 查出CPU里面消耗最高的进程
使用命令 top -Hp 2609 找出这个进程下面的线程,继续按P排序
可以看到 2854 CPU消耗最高
2854是十进制的,我们需要转换为十六进制,转换结果:b26
接下来就需要导出我们的进程快照了,看看这个线程做了啥

jstack -l 2609 > ./2609.stack

再用grep查看一下线程在文件里做了啥

cat 2609.stack |grep 'b26' -C 8

你可能感兴趣的:(javajvm)