使用Jprofiler分析OOM原因
在一个项目中,突然出现了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原因相关推荐
- jprofiler分析dump文件_内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)...
点击上方 "Java指南者"关注, 星标或置顶一起成长 免费送 1024GB 精品学习资源 来源:https://zhanghan.blog.csdn.net/article/de ...
- 常见的 OOM 原因及其解决方法(OutOfMemoryError)
当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误.本文总结了常见的 OOM 原因及其解决方法,如下图所示.如有遗漏或错误,欢迎补充指正. 1.Java ...
- MAT分析OOM dump文件方法
系列文章目录 第一章 JVM 排查问题命令汇总 第二章 MAT分析OOM dump文件方法 第三章 Java服务使用CAT监控导致OOM的分析 目录 1.明确分析目标及分析指标 2.分析工具对比(jv ...
- JProfile 分析OOM hprof文件
JProfile 分析OOM OutOfMemoryError 1.JVM组成 首先要明白JVM组成 方法区-非堆 Method Area.No-Heap Java栈-虚拟机栈 VM Stack.Ja ...
- linux oom日志分析,oom killer理解和日志分析:知识储备
oom killer日志分析,这是前篇,准备一些基础知识 带着问题看: 1.什么是oom killer 他是Linux内核设计的一种机制,在内存不足的会后,选择一个占用内存较大的进程并kill掉这个进 ...
- Java 性能优化实战记录(3)--JVM OOM的分析和原因追查
前言: C/C++的程序员渴望Java的自由, Java程序员期许C/C++的约束. 其实那里都是围城, 外面的人想进来, 里面的人想出去. 背景: 作为Java程序员, 除了享受垃圾回收机制带来的便 ...
- 42、Java服务内存OOM原因分析
1.出现问题的可能原因 对于应用来说内存分配太少 对象创建太多,又没有释放,造成内存泄漏严重,导致内存耗尽 申请太多的系统资源,系统资源耗尽.例如:不断创建线程,不断发起网络连接 2.如何定位问题(可 ...
- linux java性能监控工具_性能监控工具以及java堆分析OOM
一.性能监控工具 1.系统性能监控 Linux -确定系统运行的整体状态,基本定位问题所在 -uptime: ------系统时间 ------运行时间(例子中为127天) ------连接数(每个终 ...
- 性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题
使用Jprofiler监控分析案例 一.cpu负载过高:http://localhost:8080/PerfTeach/CpuTopServlet?id=1 cpu消耗高的可能原因 1.使用了复杂的算 ...
最新文章
- 编程语言的排名取决于应用场景和主要公司的需求
- codeigniter文件上传问题
- 进程间通信--无名管道(pipe)
- P1457 城堡 The Castle 位运算+BFS+思维(难题,好题)
- 长沙.NET社区之光
- Android7.0反射类找不到的问题
- 男人该知道的人生感悟(图)
- python判断性别程序_python 实现性别识别
- Docker快速搭建TeamSpeak多人语音聊天服务器
- 解决mysql导入数据量很大导致失败及查找my.ini 位置(my.ini)在哪
- sift计算描述子代码详解_浅谈SIFT特征描述子
- java多线程的常用方法(以及注意事项)
- 在ArcGIS Desktop中选择地物要素的方法(二)
- 韩顺平Scala精讲 最强Scala 教学视频!
- H264压缩码率与GOP
- 小米 MIUI 12 Magisk root教程(无需刷REC)
- 基于Android10的忽略HTTPS证书校验
- 如何投资股票型基金?什么时间买?买什么?
- svn中commit如何全选文件
- eNSP配置静态路由实例
热门文章
- LMT LicManager大幅提升Solidworks许可效率成效分析
- 2023年学历提升题库精选套卷及答案
- 【GO语言】棋牌游戏服务器
- 设计模式也可以这么简单
- [附源码]Python计算机毕业设计Django-Steam游戏平台系统论文
- Snorkel 学习笔记 简介与入门 LF TF SF Labeling Functions Transformation Function Slicing Function 示例
- php图片合成和图片处理(imagick)
- 老杳与老杳吧:集成电路社区
- 鼻纹识别,让AI寻宠照进现实
- 编译原理——语法分析(1)文法的形式定义与四种文法类型的区分