内存溢出的几种原因和解决办法(内存泄漏和内存溢出的原因寻找)
内存溢出的原因有很多种:
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或死循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
5.启动参数内存值设定的过小;
6.死锁
内存溢出的解决方案:
1、就是修改JVM启动参数,直接增加内存。
2、检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。
3、使用jconsole来查看死锁
4、对代码进行走查和分析
1.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式进行查询。
2.检查代码中是否有死循环或递归调用。
3.检查是否有大循环重复产生新对象实体。
4.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
5.检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
其他文章
- 北京科益虹源股票代码
- 专项债券资金使用管理办法
- 沪深指数是什么意思
- fob价是什么意思
- 长沙医保卡余额查询方法
- 建行手机银行怎么开通
- 国家加息是什么意思
- 现金比率的正常范围是多少
- 家庭摇号积分怎么算
- xop指数
- BBI指标
- 校方责任险赔付范围
- 增值税专票和普票的区别
- 账户余额和可用余额是什么意思
- 成都哪里可以打征信报告
- r2是什么意思
- 洗钱是什么意思
- 发票抬头是什么意思
- 财务管理和会计的区别
- 微信实名认证在哪里
- 农业股票一览表
- 中国十大银行
- 车险排名
- 支付宝网商贷客服
- 小孩保险有没有必要买
- 怎么查车辆保险是哪个公司
- 常用的八大银行卡
- 银行编码怎么查询
- 企业如何申报个人所得税
- 银联二维码收款怎么申请