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

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

内存溢出的解决方案:

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

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/snowwhite/p/9471710.html

Java内存溢出定位和解决方案(new)相关推荐

  1. Java内存溢出的详细解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 一.内存溢出类型 1.java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的 ...

  2. java内存溢出定位

    目录 1.导出dump文件 2.MAT分析 2.1 导入dump文件 2.2 分析 3.VisualVM 3.1 打开VisualVM 3.2 导入dump文件 3.3 分析 4.测试代码 1.导出d ...

  3. java.lang.OutOfMemoryError内存溢出定位

    OM内存溢出定位 增加异常时记日志参数 -XX:+HeapDumpOnOutOfMemoryError 该参数在JVM内存溢出时会记录堆转储文件java_pid%p.hprof.(%p为进程号) -X ...

  4. 生产内存溢出定位分析

    生产内存溢出定位分析 具体生产环境大多为linux系统,此处以linux系统为示例. 1.什么是oom? 英文全称"Out Of Memory",译为 "内存不足&quo ...

  5. java内存溢出 栈溢出的原因与排查方法

    java内存溢出 原因与排查方法 1. 内存溢出的原因是什么? 内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,导致剩余的内存不够用,造成的内存溢出.如果出现这种现象可行代码排查: 一 ...

  6. SpringBoot如何处理java内存溢出

    在上线的项目中,本地测试没有问题,部署上去就会出现java 内存溢出 java.lang.OutOfMemoryError: Java heap space 解决方案: -Xms512m -Xmx51 ...

  7. java 二维数组内存溢出_模拟Java内存溢出

    本文通过修改虚拟机启动参数,来剖析常见的java内存溢出异常(基于jdk1.8). 修改虚拟机启动参数 这里我们使用的是IDEA集成开发环境,选择Run/Debug Configurations 然后 ...

  8. Java内存溢出分析

    内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知道在什么时候或是在什么操作步骤上出现了异常,而且根据堆栈信息也很容易定位到程序中是某处出现了问题.内存溢出与锁表则不然,一 ...

  9. java内存溢出分析工具:jmap使用实战

    java内存溢出分析工具:jmap使用实战 在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap.  1 使用命令  在环境是linux+jdk1.5以上,这个工具是自带的,路 ...

  10. Java 内存溢出(一)原因、复现、排查

    目录 一.内存溢出原因 二.内存溢出实例 1.堆溢出 2.虚拟机栈和本地方法栈溢出 3.方法区和运行时常量池溢出 4.本机直接内存溢出 三.内存溢出排查 内存溢出: 是指应用系统中存在无法回收的内存或 ...

最新文章

  1. 【[HAOI2011]Problem c】
  2. STM32普通定时器(TIM2-7)的时钟源
  3. 开源 java CMS - FreeCMS2.6 静态化管理
  4. ASP.NET MVC实现一个用户只能登录一次 单用户登录
  5. for循环的执行顺序
  6. rust营火为什么放不下去_从一个研发质量案例看,5why分析法,为什么分析不下去了?...
  7. autocad完全应用指南_建筑绘图慢?580页的AUTOCAD完全自学必备指南,高效绘图不求人...
  8. MVC 自定义分面控件
  9. AJAX初识(原生JS版AJAX和Jquery版AJAX)
  10. Visual Studio Code
  11. Java知识点详解 6 注解
  12. java对象与json对象间的相互转换的方法
  13. selenium配置
  14. 2020年度博客之星发榜了,第一次参加,第70名,感谢给我投票的老铁们,2021继续努力!
  15. chrome 无法下载文件软件问题
  16. 小米pro15拆机_小米笔记本拆解
  17. 计算机指令集类型,指令集分类 (CISC,RISC和VLIW等)
  18. web页面跳转支付宝网页支付
  19. android bugly qq,Android如何快速集成腾讯Bugly
  20. 【友盟+】营销大数据论坛完美收官:数据驱动营销智能

热门文章

  1. linux shell ps kill 某个名字的所有进程
  2. Ubuntu pip AttributeError: 'module' object has no attribute '_main'
  3. 点击按钮返回上一个页面_零基础跟老陈一起学WordPress 《第四课》用WP半小时建一个商业网站...
  4. 单片机4层电梯设计c语言,详解基于单片机的四层电梯控制系统的设计与实现,Proteus仿真和程序代码...
  5. mysql order 中文版,MySQL Order By排序结果
  6. android 字体像素转换工具类_Android点9图机制及在聊天气泡中的应用
  7. linux编写设备驱动 编译成ko文件 重新编译内核,Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit...
  8. html5应用方法,9 个用来加速 HTML5 应用的方法
  9. 1.5.PHP7.1 狐教程-(PHP开发工具 PHPStorm 配置)
  10. 阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置