码迷,mamicode.com
首页 > 其他好文 > 详细

JVM内存问题定位

时间:2017-06-26 12:39:50      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:number   printf   variable   tac   free   ack   src   mil   read   

一、查看机器资源使用状态:

使用top命令,内存占用较高的那个PID对应的进程一般就是JVM了

二、查看Swap状态:

使用free -m 命令,一般内存占用过高会导致swap占用也偏高,看看swap占用比例,如何超过50%,就比较危险了

三、确认swap占用:

cat /proc/$PID/smaps | grep ‘Swap‘ | sort

四、找出该进程内最耗费CPU的线程,可以使用

1)ps -Lfp pid
2)ps -mp pid -o THREAD, tid, time
3)top -Hp pid
用第三个,输出如下:
技术分享

TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为XX的线程,用

printf "%x\n" $XX

得到XX的十六进制值为xx,下面会用到。

OK,下一步终于轮到jstack上场了,它用来输出进程XX的堆栈信息,然后根据线程ID的十六进制值grep,如下:

root@ubuntu:/# jstack $XX | grep $xx
 

JVM内存问题定位

标签:number   printf   variable   tac   free   ack   src   mil   read   

原文地址:http://www.cnblogs.com/yepei/p/7079821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!