线上环境内存溢出-OutOfMemoryError

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

公司线上环境,出现内存溢出异常,发生时,cpu占用360%。系统可用内存不足。


提示:以下是本篇文章正文内容,下面案例可供参考

一、OutOfMemoryError是什么?

当 JVM 内存严重不足时,当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError 错误。

二、实际情况(参考)

解决方案

针对大部分情况,通常只需要通过 -Xmx 参数调高 JVM 堆内存空间即可。


如果仍然没有解决,可以参考以下情况做进一步处理:

  • 如果是超大对象,可以检查其合理性,比如是否一次性查询了数据库全部结果,而没有做结果数限制。
  • 如果是业务峰值压力,可以考虑添加机器资源,或者做限流降级
  • 如果是内存泄漏,需要找到持有的对象,修改代码设计,比如关闭没有释放的连接

1.实战

当数据量过大时,发现页面响应过慢,卡住
后台执行命令

top
键盘按(排序)
Shift + M

发现java程序 cpu 360% , 内存严重不足

立即查看日志
在这里插入图片描述
发现异常:OutOfMemoryError,仔细阅读,其中使用fastJson 方法parse解析数组发生内存溢出,并且指出异常发生的代码行,找到代码,根据经验,发现fastJson 解析的数组过大,导致内存溢出。需要优化代码

总结

工作中我们经常遇上类似的错误,解决方案根据情况而定,这里我们选择优化代码。因为代码是手里面的一个新人写的,逻辑可能欠缺一些考虑。这里做个记录

猜你喜欢

转载自blog.csdn.net/weixin_43480441/article/details/128198430