关于java:后端问题排查

42次阅读

共计 411 个字符,预计需要花费 2 分钟才能阅读完成。

剖析堆内存

1.dump 堆内存命令:

jmap -dump:format=b,file=<dumpfile.hprof> <pid>

无奈及时 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

正文完
 0