一、内存不足
查看linux内存使用情况
free -m
查看java 进程/线程对系统的占用情况
top
看堆内存信息
jmap -heap pid
导出dump java堆数据
jmap -dump:live,format=b,file=/dump_.dat pid
打开jvisualVM-》文件-》装入-》堆dump
二、cpu飙升
top命令查看cpu,内存情况
top
找到占用cpu高的pid
top -Hp pid
打印出线程信息
jstack -l pid
假如我们上面 top -Hp 命令找到的占用cpu高的pid是24190
先转成16进制
然后
printf "%x\n" pid
jstack -l javapid | grep '0x+十六进制pid' -A10 --color -A是打印符合条件后n行,-C是环绕n行,-B是之前n行
根据堆栈信息和线程状态,分析cpu占用原因。
如果线程状态是BLOCKED,就是线程阻塞中