一般线上遇到比较头疼的就是OOM内存溢出问题,我们都会先看错误日志,如果错误日志能够定位出哪个类对象导致内存溢出,那么我们只需要针对问题修改bug就好。但是很多时候我们单凭日志无法定位出内存溢出问题,那么我们这时候就需要以下操作来定位问题。
1、top下对当前服务器内存有个大致了解
top后 shift+M俺内存占用由大到小排序,RES是此进程实际占用内存,%MEM是占服务器总内存的49.8。
2、利用ps命令查看服务pid
[root@speedyao java]# ps -aux|grep java
3、利用jstat查看虚拟机gc情况
jstat -gc:util <vmid> [<interval> [<count>]
vmid:虚拟机进程号
interval:采样时间,默认单位是ms
count:采样条数
[root@speedyao java]# jstat -gcutil 17561 1000 10
以上命令代表1秒钟采样1次,总共采样10次。
FULL GC明显大于