内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。

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

内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;

代码中存在死循环或循环产生过多重复的对象实体;

使用的第三方软件中的BUG;

启动参数内存值设定的过小;

内存溢出的解决方案:

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

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

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

重点排查以下几点:

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

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

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

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

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

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

内存溢出的几种原因和解决办法是什么?相关推荐

  1. java 内存 溢出_java内存溢出的几种原因和解决办法是什么?

    java内存溢出的几种原因和解决办法是什么? java内存溢出的几种原因和解决办法是: 第一类内存溢出,也是大家认为最多,第一反应认为是的内存溢出,就是堆栈溢出: 那什么样的情况就是堆栈溢出呢?当你看 ...

  2. 内存溢出的几种原因和解决办法

    对于JVM的内存写过的文章已经有点多了,而且有点烂了,不过说那么多大多数在解决OOM的情况,于此,本文就只阐述这个内容,携带一些分析和理解和部分扩展内容,也就是JVM宕机中的一些问题,OK,下面说下O ...

  3. java内存(java内存溢出的几种原因和解决办法)

    java的内存模型有哪些呢? 在java中可采用如下的形式: synchronized关键字或使用java.util.concurrent.locks中的锁 volatile关键字 Volatile表 ...

  4. Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

    Java中OutOfMemoryError(内存溢出)的三种情况及解决办法 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各 ...

  5. JVM出现OOM的八种原因及解决办法

    本文源自转载:JVM出现OOM的八种原因及解决办法 目录 一.堆溢出 1.1 原因 1.2解决方法 二.永久代/元空间溢出 2.1 原因 2.2 解决方法 三.GC overhead limit ex ...

  6. linux下hg无法运行_Linux 无法启动常见的几种原因及解决办法

    导致 Linux 无法启动的原因有很多,下面良许小编就将常见的几种原因及解决办法进行详述,希望对大家有所帮助. 文件系统配置不当,如 /etc/inittab文件./etc/fstab 文件等配置错误 ...

  7. JVM内存溢出的几种方式与解决方法

    内存溢出 JVM运行时首先需要类加载器(classLoader)加载所需类的字节码文件.加载完毕交由执行引擎执行,在执行过程中需要一段空间来存储数据(类比CPU与主存).这段内存空间的分配和释放过程正 ...

  8. JVM内存分析及导致内存溢出的不健壮代码及解决办法

    转自:http://hi.baidu.com/fvsd3/blog/item/9baec09a301bdebcc9eaf4a2.html 一.JVM内存区域组成  java把内存分四种:  1.栈区( ...

  9. 导致大量kworker的原因_氨氮超标的几种原因及解决办法

    一.有机物导致的氨氮超标 CN 比小于 3 的高氨氮污水,因脱氮工艺要求 CN 比在 4~6,所以需要投加碳源来提高反硝化的完全性.当时投加的碳源是甲醇,因为某些原因甲醇储罐出口阀门脱落,大量甲醇进入 ...

最新文章

  1. linux文件管理系统开发毕业,定稿毕业论文基于Linux的远程管理系统服务器端的实现word文档(范文1)...
  2. 关于昌平100度健身俱乐部全民健身情况调查报告
  3. 计算机应用基础教程作业脑图 车辆工程学院 冯大昕
  4. lean软件Android有吗,leanchat-android
  5. 3D建模如何学习,小白6个月入门工作?3D建模要学多久才能接外包私活?
  6. 【MySQL】MySQL 使用where条件的三种方式
  7. java中包的概念及作用_Java中包的概念和使用实战
  8. Java编程:栈的应用实例——简单的综合计算器实现(中缀表达式)
  9. linux上chrome、vlc等程序root不能运行的解决办法
  10. C-snowflake uuid 生成器
  11. 修改Mac版Word默认字体的方法
  12. 气象数据 常用下载网站
  13. ssm教务系统网站 毕业设计-附源码290915
  14. 淘宝大数据量产品技术架构
  15. [个人笔记]python学习01
  16. 使用Anbox在Jetson Nano 2GB上运行Android应用程序
  17. 献给java初学者,非常适合新手练习的Java项目
  18. 接口测试基础、流程、工具
  19. Docker 容器操作 1
  20. rg1 蓝光危害rg0_十款常见护眼台灯测评:网易、小米不负众望,艾目入眼亮度超标25倍多?...

热门文章

  1. 玩转Ubuntu(Ubuntu查看本机的ip地址,适用于Linux)
  2. Jenkins中 File Parameter参数的使用
  3. python如何计算三体运行问题
  4. 2020年11月国产数据库排行:GaussDB砥砺前行成第八,EsgynDB 4.2亿战绩晋级20强!
  5. 音乐门面怎样操作IT程序员工个人和企业价值双赢
  6. 高斯牛顿迭代法matlab代码,优化算法--牛顿迭代法
  7. 豆瓣图书Top250
  8. 海思Hi3518E+AR0130之移动侦测篇(一)
  9. YOLOv5改进Neck结构|首发最新原创:改进设计 Eff-QAFPN 结构,具有量化感知神经网络设计的高效网络结构 ,该网络结构表现强势
  10. API - SetCapture(),ReleaseCapture与GetCapture - 鼠标移动的捕获与释放