在一个项目中,突然出现了OOM故障,那么如何排除?

  • 能够看到代码第几行出错:内存快照分析工具,MAT,Jprofiler
  • Dubug,一行行分析工具

MAT、Jprofiler作业:

  • 分析Dump内存文件,快速定位内存泄露
  • 获得堆中的数据
  • 获得大的对象。

在IDEA中安装Jprofiler插件,再安装客户端,再在idea中设置Jprofiler客户端位置

示例:

Demo代码:

//-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
public class Demo3 {byte[] array = new byte[1*1024*1024];public static void main(String[] args) {ArrayList<Demo3> list = new ArrayList<>();int count = 0;try{while(true){list.add(new Demo3());count = count+1;}}catch (Exception e){System.out.println("count:"+count);e.printStackTrace();}}
}

设置VM options参数

-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError

-Xms 设置初始化内存分配大小 默认为 1/64

-Xmx 设置最大分配内存,默认为 1/4

-XX:+PrintGCDetails 打印GC情况

-XX:+HeapDumpOnOutOfMemoryError Dump出OOM错误

运行结果:

Dump出的内存快照可以在该项目与src同级目录下找到。直接用Jprofiler客户端打开。

打开效果图

可以通过Jprofiler客户端进行内存分析。

发现一个数组对象大小占总内存的89%,这非常不正常,可以猜测应该是数组对象发生问题。

可以得到错误出现的代码行数,可以发现是第13行代码,第13行代码是

  list.add(new Demo3());

由此得出OOM的原因是list数组中一直放大量数据,从而导致堆内存溢出。

使用Jprofiler分析OOM原因相关推荐

  1. jprofiler分析dump文件_内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)...

    点击上方 "Java指南者"关注, 星标或置顶一起成长 免费送 1024GB 精品学习资源 来源:https://zhanghan.blog.csdn.net/article/de ...

  2. 常见的 OOM 原因及其解决方法(OutOfMemoryError)

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

  3. MAT分析OOM dump文件方法

    系列文章目录 第一章 JVM 排查问题命令汇总 第二章 MAT分析OOM dump文件方法 第三章 Java服务使用CAT监控导致OOM的分析 目录 1.明确分析目标及分析指标 2.分析工具对比(jv ...

  4. JProfile 分析OOM hprof文件

    JProfile 分析OOM OutOfMemoryError 1.JVM组成 首先要明白JVM组成 方法区-非堆 Method Area.No-Heap Java栈-虚拟机栈 VM Stack.Ja ...

  5. linux oom日志分析,oom killer理解和日志分析:知识储备

    oom killer日志分析,这是前篇,准备一些基础知识 带着问题看: 1.什么是oom killer 他是Linux内核设计的一种机制,在内存不足的会后,选择一个占用内存较大的进程并kill掉这个进 ...

  6. Java 性能优化实战记录(3)--JVM OOM的分析和原因追查

    前言: C/C++的程序员渴望Java的自由, Java程序员期许C/C++的约束. 其实那里都是围城, 外面的人想进来, 里面的人想出去. 背景: 作为Java程序员, 除了享受垃圾回收机制带来的便 ...

  7. 42、Java服务内存OOM原因分析

    1.出现问题的可能原因 对于应用来说内存分配太少 对象创建太多,又没有释放,造成内存泄漏严重,导致内存耗尽 申请太多的系统资源,系统资源耗尽.例如:不断创建线程,不断发起网络连接 2.如何定位问题(可 ...

  8. linux java性能监控工具_性能监控工具以及java堆分析OOM

    一.性能监控工具 1.系统性能监控 Linux -确定系统运行的整体状态,基本定位问题所在 -uptime: ------系统时间 ------运行时间(例子中为127天) ------连接数(每个终 ...

  9. 性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题

    使用Jprofiler监控分析案例 一.cpu负载过高:http://localhost:8080/PerfTeach/CpuTopServlet?id=1 cpu消耗高的可能原因 1.使用了复杂的算 ...

最新文章

  1. 编程语言的排名取决于应用场景和主要公司的需求
  2. codeigniter文件上传问题
  3. 进程间通信--无名管道(pipe)
  4. P1457 城堡 The Castle 位运算+BFS+思维(难题,好题)
  5. 长沙.NET社区之光
  6. Android7.0反射类找不到的问题
  7. 男人该知道的人生感悟(图)
  8. python判断性别程序_python 实现性别识别
  9. Docker快速搭建TeamSpeak多人语音聊天服务器
  10. 解决mysql导入数据量很大导致失败及查找my.ini 位置(my.ini)在哪
  11. sift计算描述子代码详解_浅谈SIFT特征描述子
  12. java多线程的常用方法(以及注意事项)
  13. 在ArcGIS Desktop中选择地物要素的方法(二)
  14. 韩顺平Scala精讲 最强Scala 教学视频!
  15. H264压缩码率与GOP
  16. 小米 MIUI 12 Magisk root教程(无需刷REC)
  17. 基于Android10的忽略HTTPS证书校验
  18. 如何投资股票型基金?什么时间买?买什么?
  19. svn中commit如何全选文件
  20. eNSP配置静态路由实例

热门文章

  1. LMT LicManager大幅提升Solidworks许可效率成效分析
  2. 2023年学历提升题库精选套卷及答案
  3. 【GO语言】棋牌游戏服务器
  4. 设计模式也可以这么简单
  5. [附源码]Python计算机毕业设计Django-Steam游戏平台系统论文
  6. Snorkel 学习笔记 简介与入门 LF TF SF Labeling Functions Transformation Function Slicing Function 示例
  7. php图片合成和图片处理(imagick)
  8. 老杳与老杳吧:集成电路社区
  9. 鼻纹识别,让AI寻宠照进现实
  10. 编译原理——语法分析(1)文法的形式定义与四种文法类型的区分