找出占用cpu或内存最多的线程并转储线程堆栈
- 使用top找出消耗资源最多的进程pid, top
- 找出进程中消耗资源最多的线程pid, top -Hp pid
- 生成线程堆栈dump文件, jstack -l pid
- 分析线程状态,如阻塞,等待锁,死循环等原因
转储堆内存文件快照
- jmap -dump:live,format=b,file=heap-dump.bin <pid>
- 添加jvm参数 -XX:+HeapDumpOnOutOfMemoryError 和 -XX:+HeapDumpBeforeFullGC 自动生成
怎样分析线程堆栈