导致内存溢出的原因有哪些?内存溢出问题又如何解决

之前小编为大家介绍了一下内存溢出是什么意思。那么有的网友肯定会问导致的内存溢出的原因是什么?出现额内存溢出又如何解决。不急,下面小编就再次为大家分享一下内存溢出的原因以及解决方法。


内存溢出的原因以及解决方法

引起内存溢出的原因有很多种,小编列举一下常见的有以下几种:

1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
5.启动参数内存值设定的过小

内存溢出的解决方案:

第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)

第二步,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。

第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

重点排查以下几点:
1.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。

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

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

4.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。

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

第四步,使用内存查看工具动态查看内存使用情况

(0)

相关推荐

  • 安装win7之后8G内存电脑只能识别4G内存是什么原因

    同事前两天换了一个win7的系统,可是安装win7系统之后,发现电脑的配置上面8G的内存却只显示成4G的内存可用,那么另外4G内存跑到哪里去了呢?8G内存电脑只能识别4G内存是怎么回事?就来帮你分析下 ...

  • Win7系统提示"内存不足"的原因及解决办法

    Win7系统提示"内存不足"的原因及解决办法

  • win7系统使用过程中总提示内存不足的原因及解决方法

    在使用win7系统的过程中,有时候会遇到一些常见的故障问题,比如有的用户反映在操作使用win7系统的时候,系统总弹出“计算机的内存不足”的提示。大部分用户遇到这种情况往往不懂得如何处理。其实只要我们了 ...

  • Win8系统下内存不稳定的原因

    Win8内存不稳定?这样的状况可能很多用户都没有遇到过,但它却真实的存在了.近日,很多用户表示电脑在使用的时候会突然提示内存不足,但是内存又是足够的.其实这都是内存不稳定的原因造成的,而为什么内存会出 ...

  • 360极速浏览器占用内存高怎么办 360极速浏览器占用内存大解决方法

    内存过高原因分析: 在360浏览器3.x的多进程的框架下,内存占用比单进程高,但是优点是能在网页关闭之后完全释放网页占用的资源. 在360浏览器3.x的混合进程的框架下,内存占用比单进程较高,但是优点 ...

  • 该内存不能为read或该内存不能为written解决方案

    计算机系统中运行一些容量较大的程序或者游戏时,系统常常会自动弹出“xx内存不能为read或written”的错误提示,遇到这种故障信息时,我们该如何才能将它有效排除,同时确保下次运行容量较大的程序或者 ...

  • 服务器内存与普通PC机上的内存有什么区别

    问:什么是服务器内存?它与普通PC机上的内存有什么区别? 答:服务器内存也是内存,它与我们平常在电脑城所见的普通PC机内存在外观和结构上没有什么明显实质性的区别,它主要是在内存上引入了一些新的技术,普 ...

  • 电脑弹出内存不能为read(电脑内存不能为read怎么解决)

    在使用电脑运行一些程序时出现了"内存不能为read"?该内存不能为read的原因有很多,但是一般都是由于病毒木马造成或应用程序组件丢失所致,内存指令不能read或written,这 ...

  • 内存延迟是什么以及对内存性能的影响介绍

    我想大家在够没或使用内存条的时候可能更为关注内存的容量大小,比如1G的内存与2G的内存,大家都知道这一点很重要。但是决定内存性能的不仅仅只有容量,事实上还有很多的参数,而本文所要介绍的内存延迟就是其中 ...