排查java进程问题

1. 先用jps命令查出java进程号

2. 使用top命令查出该进程使用cpu最高、占用内存最大的线程(嫌疑最大)

这里我们选取微服务项目中的主进程24240

top -Hp 24240 -d 1 -n 1

3. 将该线程号转为16进制(线程号的显示用的是16进制)

24240 = 5EB0

4. 使用jstack命令查询该线程堆栈

jstack -l 24240 | grep 5EB0 -A 20

5. 使用jmap显示堆中对象的统计信息

jmap -histo:live 24240 > test.log

less test.log

通过上述五步,基本能定位一个问题java进程卡在哪行代码,以及是什么类的实例过多(导致内存泄漏)。




posted @ 2023-02-16 13:14  lamda表达式先驱  阅读(57)  评论(0)    收藏  举报