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

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

内存溢出的解决方案:

第一步,修改 JVM 启动参数,直接增加内存。
第二步,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。
第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

重点排查以下几点:

1.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
2.检查代码中是否有死循环或递归调用。
3.检查是否有大循环重复产生新对象实体。
4.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中 数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
5.检查 List、MAP 等集合对象是否有使用完后,未清除的问题。List、MAP 等集合对象会始终存有对对象的引用,使得这些对象不能被 GC 回收
第四步,使用内存查看工具动态查看内存使用情况。

在开发中遇到过内存溢出么?原因有哪些?解决方法有哪些?相关推荐

  1. 关于android相机开发中遇到的内存溢出的问题

    2019独角兽企业重金招聘Python工程师标准>>> BitmapFactory时务必要尽快的使用Bitmap.recycle(); 方法进行内存回收, 在java中,一般都很少有 ...

  2. 移植野火ucos例程stm32F103ZET6到C8T6上时,遇到内存溢出的问题,以及解决方法

    1.更改完单片机型号后,编译工程后,出现内存溢出错误, .\Objects\ISO-STM32.axf: Error: L6406E: No space in execution regions wi ...

  3. windows2003中未分页内存泄漏导致服务器不稳定的解决方法

    2015年天互进行了内部员工干货分享计划,让销售.技术.客服.市场.行政五大体系的员工把自己工作中的干货内容分享给大家,共同提高业务能力和工作效率.本篇内容来自虚拟产品部姚运的技术日志分享," ...

  4. 关于小米手机开发中,不能打印、查看logcat日志的解决方法。

    最近在开发过程中使用小米手机作为测试机的时候发现没有logcat日志输出.在网上找来找去终于找到了一篇解决的有效博客,这里特别记录一下,也希望能帮到别人. 解决办法如下: 在电脑上找到 .Androi ...

  5. Android开发中Activity与Service之间getSharedPreferences不同步的解决方法

    当Activity中修改了shared的值,而Service中读到的还是原来的值,相当的头大.不过终于还是在网上找到了解决的办法. 向Google致敬,远离Baidu更健康,下面说正事. 我们在写程序 ...

  6. php中 session start,php session_start()出错原因分析及解决方法

    错误提示: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers ...

  7. JVM优化系列-JVM内存溢出的原因

    导语   内存溢出(OutOfMemory)OOM,通常情况下出现在某一块内存空间快要消耗完的时候.在Java程序中,导致内存溢出的原因有很多,下面就来分享关于内存溢出的一些问题.其中包括堆内存.直接 ...

  8. java知识点8——垃圾回收原理和算法、通用的分代垃圾回收机制、 JVM调优和Full GC、开发中容易造成内存泄露的操作

    垃圾回收原理和算法 内存管理 Java的内存管理很大程度指的就是对象的管理,其中包括对象空间的分配和释放. 对象空间的分配:使用new关键字创建对象即可 对象空间的释放:将对象赋值null即可 垃圾回 ...

  9. Android开发中常见的内存泄露案例以及解决方法总结

    Android开发中常见的内存泄露案例以及解决方法总结 参考文章: (1)Android开发中常见的内存泄露案例以及解决方法总结 (2)https://www.cnblogs.com/shen-hua ...

最新文章

  1. Kimera:一个基于度量语义的SLAM开源库
  2. OpenMM | PDBFixer 用于蛋白质预处理
  3. JAXB--@XmlElementWrapper注解和泛型一起使用
  4. CSDN博客生成目录
  5. golang web 静态文件
  6. 比赛报名 | 第二届ChineseCSCW恒电杯大数据竞赛
  7. centos7安装csvn
  8. 两个有序链表序列的合并
  9. ptp输出内容包含什么_PTP技术及其应用分析
  10. docker适合初学者吗_简化了Docker:面向绝对初学者的动手指南
  11. Musixtex写五线谱
  12. WIN7下使用iis搭建php环境(上)
  13. 什么是OID(全局对象标识符)
  14. 请叙const与readonly的区别
  15. 2022-2027年中国猴车行业市场调研及未来发展趋势预测报告
  16. 计算机毕业设计Java医护人员排班系统(源码+系统+mysql数据库+Lw文档)
  17. jointJS 获取path数据
  18. C语言if和汇编jcc程序对比,逆向基础笔记六 汇编跳转和比较指令
  19. matlab 分母有理化,第5章频率特性精讲.ppt
  20. EA公司CFO简森将于月底离职

热门文章

  1. 离线版的SAP中F1帮助
  2. SAP-ABAP程序发送邮件
  3. 浅谈ATP CHECK zz
  4. 提高BSEG处理效率
  5. 巧用参数组件和过滤组件,教你快速定位目标数据
  6. 美妆AI要抢李佳琦的饭碗?
  7. html5 video js控制摄像头的焦距,html 通过input video canvas 打开摄像头 定制相机
  8. java 字符串驻留_java String 以及字符串直接量 与 字符串驻留池 ...
  9. html如何获得网址,已知一个网址,如何获得该网址对应的html源代码?在del 找人事管理软件...
  10. 指针不显示 upupw_Go高级编程:指针和内存分配详解