问题定位


出现OOM 常见的原因:
1、内存分配小 默认初始值无法承担过大的业务
2、大对象没有及时释放 可以参考强链接及时置为null,
3、网络不通频繁请求链接 服务端网络异常问题
4、程序问题频繁创建线程 代码逻辑不严谨等

2种排查方式:线上linux服务器排查、通过插件排查
线上linux服务器排查:
1、查发生了OOM的进程${pid}
执行top -d 1 -c,每秒刷新一次,显示进程运行信息列表
键入M (大写m),进程按照内存使用排序

2、jmap -heap ${pid} 查看xmx xms等使用情况
3、jmap -histo:live ${pid} | more 找到最耗内存对象
4、ps -efL ${pid} 确认是否是资源耗尽 如果资源耗尽,也可能出现OOM

通过插件排查:
服务器启动加入参数
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/${path}/oom.hprof
如果出现oom则对应目录生成oom.hprof文件
然后在本地环境服务器:
安装mat插件 或jconsole 插件等 把oom.hprof文件导入即可

猜你喜欢

转载自www.cnblogs.com/webster1/p/12890243.html