如何定位java进程中使用最耗内存的进程 有更新!
1.清除进程和线程的关系 2.知道linux查看进程对应线程的命令 查看进程命令 ps -ef |grep java 查看进程对应线程命令 top -Hp <pid> 找到最大线程的pid号 3.打印堆栈信息 jstack <pid> jstack 里面存的是16进制的数字。所以需要把十进制转换为16进制 printf "%x\n" pid jstack pid |grep 'nid' -C5 –color 找到了16进制的pid号。那就直接可以在jstack里搜索找到对应进程信息了,就能找到对应的代码了 生成dump文件: jmap -dump:format=b,file=/path/heap.bin 进程ID jmap -dump:live,format=b,file=/path/heap.bin 进程ID live参数: 表示我们需要抓取目前在生命周期内的内存对象,也就是说GC收不走的对象,然后我们绝大部分情况下,需要的看的就是这些内存。而且会减小dump文件的大小。 4.案例 背景 1、java 正则表达式回溯造成 CPU 100% ....