内存溢出常见报错原因

StackOverFlowError :方法地柜调用,栈内存溢出。

OutOfMemoryError:Java heap space 大量对象创建撑爆堆区,堆内存溢出。

OutOfMemoryError:GC overhead limit exceeded 大量对象创建爱你且无法回收,GC时间占用超过98%并且回收不到2%的内存,频繁GC且GC无效果。

OutOfMemoryError:Direct buffer memory 使用直接内存不在GC管辖范围,直接内存不够分配程序就会崩溃

OutOfMemoryError:unable to creat new native thread 应用进程创建线程数超过系统承载极限。

linux系统一般默认允许单个进程创建不超过1024个线程。

OutOfMemoryError:Metaspace 大量类被加载,元数据区溢出。

排查思路:

第一步:检查错误日志,查看OutOfMemory错误前是否有其他异常或者错误

第二步:查看服务器内存、程序占用内存情况

第三步:使用内存查看工具动态查看程序内存使用情况

第四步:对代码进行走查和分析,找出可能发生内存溢出的位置,重点排查一下几点:

1、检查对数据库查询中是否有一次获取全部数据的查询。如一次取十万条记录以上到内存,就可能引起内存溢出。

2、检查代码中是否有死循环或者递归调用。

3、检查是否有大循环重复产生新对象实例。

4、检查list、map等集合对象是否有使用完成后,未清除的问题。List MAP等集合对象会始终存有对象的引用,使得这些对象不能被GC回收。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值