面试问题
OOM排查
工具: jstack、jmap
ps 命令找到对应进程的 pid(如果你有好几个目标进程,可以先用 top 看一下哪个占用比较高)
pid 转换为 16 进制:printf '%x\n' pid 得到 nid
在 jstack 中找到相应的堆栈信息jstack pid |grep 'nid' -C5 –color
查看某进程的线程总数: pstree -p pid |wc -l
导出堆转储文件,用于分析堆内存使用情况 jmap -dump:format=b,file=./logs/heapdump.hprof pid
系统挂了就没法分析堆信息了,可以加在启动命令里:
-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs/
IDEA直接打开 .hprof文件进入分析视图
堆内存满会发生fullGC,GC后依然满,将OutOfMemoryError(OOM)
打印堆使用信息:jhsdb jmap --heap --pid 10465
VisualVM 或者同名IDEA插件用来分析堆转储文件