Java堆溢出

现象

  • java.lang.OutOfMemoryError: Java heap space

原因

  • 大量对象没有释放,无法回收

解决方案

  • 使用内存映像分析工具分析 Dump 出来的堆转储快照,分析对象是是否合理存在,可以排查是内存泄露还是溢出
  • 如果内存泄露,工具查看泄漏对象到 GC Root 的引用链,定位出泄漏的位置;
  • 如果不存在泄漏,检查虚拟机堆参数(-Xmx 和 -Xms)是否可以调大

配置

  • 配置 -XX:HeapDumpOnOutOfMemoryError,在发生内存溢出会存储快照用于事后分析

Java 虚拟机栈和本地方法栈溢出

原因

  • 单线程下,栈帧过大或内存过小,都不会导致OutOfMemoryError,只会导致StackOverflowError(栈会比内存先出问题)
  • 多线程情况下会导致OutOfMemoryError,因为多个线程本身要占用内存

解决方案(多线程情况)

  • 更换64位虚拟机
  • 减少最大堆和栈容量换取更多的线程

直接内存溢出

现象

  • Heap Dump 文件中看不见明显异常,程序中直接或间接用了 NIO

解决方案

  • 提高直接内存大小 -XX:MaxDirectMemorySize,没有没有指定默认和-Xmx一致

Java OOM异常原因及解决方案相关推荐

  1. 九种 OOM 常见原因及解决方案(IT枫斗者)

    九种 OOM 常见原因及解决方案(IT枫斗者) 什么是OOM? OOM,全称"Out Of Memory",翻译成中文就是"内存用完了",来源于java.lan ...

  2. Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 参考文章: (1)Java ConcurrentModificationException异常原因和解决方法 ...

  3. 高手总结的9种 OOM 常见原因及解决方案

    高手总结的9种 OOM 常见原因及解决方案 [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样 的处理方式让写的同学更加明确线程池的运行 ...

  4. javaheapspace解决方案_高手总结的9种 OOM 常见原因及解决方案

    当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误.本文总结了常见的 OOM 原因及其解决方法,如下图所示.如有遗漏或错误,欢迎补充指正. 1.Java ...

  5. (转)Java ConcurrentModificationException异常原因和解决方法

    转载自:http://www.cnblogs.com/dolphin0520/p/3933551.html 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会 ...

  6. 一种桌面图标显示异常原因及解决方案

    Win10 系统  桌面图标显示异常如下图 原因:可能是因为修改过文件路径.(答主重命名过路径中某个文件夹). 右键打开属性. 打开更改图标.证实了这是因为路径错误导致的. 解决方案:1.在设置界面手 ...

  7. Java内存溢出(OOM)异常完全指南

    原文:http://luecsc.blog.51cto.com/2219432/1948800 这也许是目前最为完整的Java OOM异常的解决指南. 1.Java.lang.OutOfMemoryE ...

  8. 字节跳动应用性能监控帮助客户Java OOM崩溃率下降80%

    一.前言 如何定位和解决 Android App 因为内存不足(Java OOM)引发的线上问题一直是业界的难题.崩溃现场能抓取到的常规信息中并不包括内存分配详情--不了解内存被谁持有,自然也无法追查 ...

  9. 一种隐蔽性较高的Java ConcurrentModificationException异常场景

    前言 在使用Iterator遍历容器类的过程中,如果对容器的内容进行增加和删除,就会出现ConcurrentModificationException异常.该异常的分析和解决方案详见博文<Jav ...

最新文章

  1. HTML5的viewport使用
  2. Atitit.js模块化 atiImport 的新特性javascript import
  3. html颜色渐变讲解,20个网页设计中渐变色运用实例欣赏
  4. c mysql 双主复制_mysql双主复制及使用keepalived作高可用的配置详解
  5. 推荐一个很好的富文本web编辑器UEditor
  6. 依赖项出现感叹号怎么办_「电脑常用技巧」不喜欢看到的黄色感叹号
  7. 如何能把 fastdfs-client-java的jar包安装到本地的仓库中
  8. iOS面试题06-其他
  9. linux中文件带方块,JFreeChart图片里的中文在linux下显示为方块的解决办法
  10. 流媒体RTMP协议解析
  11. 数据分析的软件最全场景盘点
  12. mysql nutch_nutch2.2+mysql部署
  13. UIPickerView 用法
  14. 一线城市nbsp;ornbsp;二线城市?(目前为止…
  15. 操作系统第三次实验——线程基础总结
  16. 长期支持 LTS(Long-term Support)是怎样的一种支持方式
  17. Android产品研发(五)--多渠道打包
  18. 一个完整计算机的主要配置,一个完整的计算机的配置包括CPU
  19. 5000词学英语——DAY6
  20. 联想MIIX720二合一笔记本键盘维修(带键盘灯款)

热门文章

  1. java回调函数(全干货)
  2. 关于提高自己Java水平十大技术
  3. 技术分享连载(二十七)
  4. url传参(中文乱码)值得注意的地方
  5. linux 下创建GRE隧道
  6. JAVA面试-HIBERNATE与 MYBATIS的对比
  7. OSX上Docker快速上手-以部署node.js环境为例
  8. jQuery 对象与Dom 对象互转
  9. Eclipse is running in a JRE, but a JDK is required
  10. 经典SQL回顾之晋级篇