当前位置:首页 > 内存 > 正文

内存溢出异常怎么解决

  • 内存
  • 2024-05-16 03:02:23
  • 4242

一、内存溢出该怎么办?解决办法有很多,先说以下几点
第一步是改变JVM启动参数,直接增加内存?(不要忘记添加-Xms和-Xmx参数。)
第二步是检查错误日志,看看在“OutOfMemory”错误之前是否还有其他异常或错误。
第三步是检查和分析代码,找出可能发生内存溢出的地方。
造成内存不足和内存溢出的原因有很多,最常见的有以下几种:
1、一次性从数据库加载数据。提取的数据过多;
2.集合类中有对象的引用,使用后没有删除,导致JVM无法自行回收;
3.代码中存在无限循环或者循环生成过多重复的对象实体;
4.使用的第三方软件存在BUG;
5.启动参数内存值设置太小;
如果您的驱动有任何问题,请参考并关注驱动生存期内存溢出解决方案:
第一步修改JVM启动参数,直接增加内存。(一定要添加-Xms和-Xmx参数。)
第二步是检查错误日志,看看在“OutOfMemory”错误之前是否还有其他异常或错误。
第三步是检查和分析代码,找出可能发生内存溢出的地方。
重点抓好以下几点:
1.检查数据库查询中是否存在一次获取所有数据的查询。一般来说,如果一次加载10万条记录到内存中,就可能会发生内存溢出。这个问题比较隐蔽。上线前,数据库数据较少,不太容易出问题,上线后,数据库数据较多,单次查询就可能导致内存溢出。因此,尝试使用分页进行数据库查询。
2.检查代码中是否存在无限循环或递归调用。
3.检查是否存在大循环,重复生成新的对象实体。
4.检查数据库查询中是否存在一次获取所有数据的查询。一般来说,如果一次加载10万条记录到内存中,就可能会发生内存溢出。这个问题比较隐蔽。上线前,数据库数据较少,不太容易出问题,上线后,数据库数据较多,单次查询就可能导致内存溢出。因此,尝试使用分页进行数据库查询。
5.检查List、MAP等集合对象使用后是否未被删除。List、MAP等集合对象总会有对象引用,使得这些对象无法被GC回收。
第四步,使用内存可视化工具动态查看内存使用情况。
方法有很多,这里给你三个建议:1、再添加一根内存条2、卸载系统盘无用的软件3、实用设置:右键计算机资源;,点击属性-高级-设置-高级将最大值改为你电脑内存的1.5倍


二、内存溢出错误怎么解决内存溢出错误的解决方法:
1.设置虚拟内存
①右键单击桌面上的“计算机”图标,在出现的快捷菜单中选择“属性”选项,打开“高级系统设置”。单击窗口中的“高级”选项卡,显示高级设置对话框。
②单击“性能”区域中的“设置”按钮,在出现的“性能选项”窗口中选择“高级”选项卡,打开其对话框。
③在此对话框中,您可以看到有关虚拟内存的区域。单击“更改”按钮,进入“虚拟内存”设置窗口。选择一个可用空间较多的分区,勾选“自动管理所有驱动器的分页文件大小”前面的复选框,以便系统自动分配理想的值。您还可以选择自定义尺寸并手动填写值。
2.检查系统是否存在木马或病毒
3.删除历史记录
4.
5.使用内存查看器动态查看内存使用情况。