扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
java.lang.OutOfMemoryError异常解决方法
创新互联主要从事网站设计制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务临漳,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
原因:
常见的有以下几种:
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
5.启动参数内存值设定的过小;
常见错误提示:
1.tomcat:java.lang.OutOfMemoryError: PermGen space
2.tomcat:java.lang.OutOfMemoryError: Java heap space
3.weblogic:Root cause of ServletException java.lang.OutOfMemoryError
4.resin:java.lang.OutOfMemoryError
5.java:java.lang.OutOfMemoryError
解决;
1.应用服务器提示错误的解决:
把启动参数内存值设置足够大。
2.Java代码导致错误的解决:
重点排查以下几点:
1)检查代码中是否有死循环或递归调用。
2)检查是否有大循环重复产生新对象实体。
3)检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
4 )检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
java运行出现死循环时,在dos命令行界面下,可以直接使用ctrl+c的组合键来停止程序,ctrl+c组合键在dos命令行界面中可以不用等待程序正常运行结束,直接终止程序;还可以直接点击dos命令行界面窗口的关闭按钮来结束程序。在开发工具eclipse或者Myeclipse中,可以直接点击运行控制台中的红色按钮来结束程序。
线程阻塞了,开启新线程执行你的操作。不要在主线程中执行耗时操作
1、电脑中毒或中恶意软件,也可能引起电脑异常,解决办法:升级杀毒软件,杀毒,实在不行,就重装或恢复过系统。
2 、配置不合理,不协调,bios设置错误,也会引起电脑异常,所以装机或升级硬件要找更专业的人员解决。
3 、电脑运行中温度过高也会引起电脑异常,建议用鲁大师软件,测下各项硬件温度,再解决。
4 、由于电压不稳点,电源功率不够,也会经常引起电脑异常,如果是这些原因引起的就配置一个稳压器,换大功率电源就能解决。
5 、由于运行大软件、大程序而导致的,如 玩大游戏、用大型软件等,那就应该是电脑硬件配置差的原因引起的。解决办法就只有升级电脑配置、优化电脑系统。
6 、旧电脑由于机箱里面灰尘太多,引起短路也容易引起电脑异常。要经常清理下机箱里面的灰尘。
7、旧电脑由于使用时间长了,主板电路电容老化,也会引起电脑异常问题。只有送修或更换了。
8、 旧电脑硬盘用久了也会出故障引起电脑死机重启,这就需要用硬盘测试软件测试下硬盘,重新分区安装系统可以修复硬盘逻辑坏道,修复不了,也只有换硬盘了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流