扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
怎么在java中排查内存是否溢出?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联公司主营全南网站建设的网络公司,主营网站建设方案,重庆APP开发,全南h5微信小程序搭建,全南网站营销推广欢迎全南等地区企业咨询
Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。
1、排查的注意点
(1)内存中加载的数据太多,例如一次从数据库中取出太多数据;
(2)集合类有对象引用,使用后未清空,使JVM无法回收;
(3)代码中存在死循环或循环产生过多重复的物体;
(4)使用的第三方软件中的错误;
(5)启动参数内存值设置过小。
2、排查的流程
(1)修改JVM启动参数,直接增加内存。
(2)检查错误日志。
(3)对代码进行走查和分析,找出内存溢出的可能性。
3、排查后的解决办法
检查代码中是否有死循环或递归调用。
检查是否有循环重复产生新对象实体。
检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询可能就会引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
检查List、Map等集合对象是否使用完未清除的问题,List、Map等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
检查对大文件的读取是否采用nio的方式。
看完上述内容,你们掌握怎么在java中排查内存是否溢出的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流