OOM内存溢出分析

news2024/10/4 15:41:58

Mat内存溢出dump文件分析工具http://www.eclipse.org/mat/downloads.php

模拟OOM Java 程序

package org.cj.oom;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * 创建内存分析
 * java启动参数指定内存 -Xms1m -Xmx1m
 * @author chenjian
 * @date 2022/11/18
 * @version 1.0
 */
public class OomAnalysis {
    public static void main(String[] args) throws InterruptedException {

        new Thread(new Runnable() {
            @Override
            public void run() {
                List<OomAnalysis> list = new ArrayList<>();
                while (true) {
                    list.add(new OomAnalysis());
                }
            }
        }).start();

        while (true) {
            TimeUnit.SECONDS.sleep(3);
        }
    }
}

程序运行后会出现异常

获取Dump文件方式

1.主动方式获取dump文件

使用 jps命令查询堆出现异常的进程名

jps

使用命令获取dump文件到指定目录

jmap -dump:format=b,file=E:/test/headdump.hprof 14380

2.通过制定Java vm 参数方式获取(推荐使用

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:/test/heapdump1.hprof

3.获得的文件如下图所示

DUMP 文件分析

1.打开Mat工具 MemoryAnalyzer.exe

2.点击File -> Open Heap Dump ,点击 Finish

3.点击切换视图

4.发现大部分内存占用的是这个线程,占用了92.66%

5.点开发现,内存空间是被一个 36万长度的数组给占据了,数组的元素是 OomAnalysis

6.接下来要寻找出现这个问题的代码在哪里。再返回到最初的大饼图,点击最下面的details。然后点击See stacktrace 堆叠追踪。

7.继续点击 Probblem Suspect 1详情中的 See stacktrace

8.这里可以看到完整的堆栈信息,里面可以发现我们增加模拟溢出代码的那个Java文件,并且爆发内存溢出的代码行也可以对上,至此溢出分析结束。

本文的内存分析针对性较强,实际情况 会有很多的干扰因素,我们需要从这些因素中找出真正的元凶。

可以配合 Jstat 命令来一起分析OOM的原因,缩小排查的范围。

jstat命令博客icon-default.png?t=M85Bhttps://blog.csdn.net/maosijunzi/article/details/46049117?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-46049117-blog-124800644.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-46049117-blog-124800644.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/14544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

没有上司的舞会 - 树形DP

目录题目描述前言C代码题目描述 Ural 大学有 NNN 名职员&#xff0c;编号为 1∼N1∼N1∼N。 他们的关系就像一棵以校长为根的树&#xff0c;父节点就是子节点的直接上司。 每个职员有一个快乐指数&#xff0c;用整数 HiH_iHi​ 给出&#xff0c;其中 1≤i≤N1≤i≤N1≤i≤N。…

ElasticSearch分布式搜索引擎安装保姆级教程

ElasticSearch分布式搜索引擎安装教程 一.Hr&#xff1a;ElasticSearch是什么&#xff1f; 答&#xff1a;Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java语言开发的&#…

后端API接口性能优化的10种方案,真有用!

后端API接口性能优化的10种方案&#xff0c;真有用&#xff01; 批量思想&#xff1a;批量操作数据库 优化前&#xff1a; //for循环单笔入库 for(TransDetail detail:transDetailList){insert(detail); } 优化后&#xff1a; batchInsert(transDetailList); 打个比喻&…

docker-compose的安装与卸载

compose项目是docker官方的开源项目,负责实现对Docker容器的快速编排 定位 定位是定义与运行多个docker容器的应用,同时可以对多个容器进行编排Compose 中有两个重要的概念&#xff1a; 服务 (service)&#xff1a;一个应用的容器&#xff0c;实际上可以包括若干运行相同镜像的…

电压跌落检测

1.前言 根据国际上较为权威的 IEEE 制定的标准可知&#xff0c;电压跌落是指电力系统中某点工频电压方均根值突然降低至 0.1p.u. ~ 0.9p.u.&#xff0c;并在短暂持续10ms~1min 后恢复正常的现象。在对电压跌落进行检测时一般都需要检测起止时刻、相位跳变、跌落深度这三个特征…

小啊呜产品读书笔记001:《邱岳的产品手记-03》第04+05讲 如何当好AI时代的产品经理 06讲 产品案例分析·TheGuardian的文本之美

小啊呜产品读书笔记001&#xff1a;《邱岳的产品手记-03》第0405讲 如何当好AI时代的产品经理 & 06讲 产品案例分析TheGuardian的文本之美一、今日阅读计划二、泛读&知识摘录1、04讲 如何当好AI时代的产品经理&#xff1f;&#xff08;学习篇&#xff09;2、05讲 如何当…

07-服务管理-02-yum常用命令和yum源

文章目录1. yum常用命令1.1 安装卸载服务- 安装- 升级- 卸载- 清空缓存- 只下载不安装1.2 查看- 查看yum库- 列出所有包- 查看包信息- 查看文件所在包1.3 包组的使用2. 指定yum源3. 常用yum源1&#xff09;epel源2&#xff09;163源3&#xff09;阿里源4&#xff09;清华源4. y…

盘点实验室的----FITC-透明质酸;FITC-HA不同透明质酸分子量修饰

FITC(异硫氰酸荧光素)是一种胺活性衍生物的荧光染料&#xff0c;FITC 具有广泛的应用&#xff0c;作为抗体和其他探针标记&#xff0c;用荧光显微镜&#xff0c;流式细胞仪、免疫荧光方法如 ELISA 和 Western印迹实验。异硫氰酸荧光素(FITC)具有永久性标记生物分子的独特检测性…

【C++】构造函数、析构函数、拷贝构造函数

目录 构造函数 析构函数 拷贝构造函数 C 在 C 语言的基础上增加了面向对象编程&#xff0c;C 支持面向对象程序设计。类是 C 的核心特性&#xff0c;通常被称为用户定义的类型。 类用于指定对象的形式&#xff0c;它包含了数据表示法和用于处理数据的方法。类中的数据和方…

Nginx下载安装以及简单使用

本文来说下Nginx的下载安装以及常用功能的简单使用 文章目录下载nginx启动nginx关闭nginx下载nginx 下载地址:http://nginx.org/en/download.html 直接下载 nginx-1.18.0.zip&#xff0c;下载后解压&#xff0c;解压后如下 启动nginx 有很多种方法启动nginx (1)直接双击nginx.…

浅谈深度学习中的概率

摘要&#xff1a;本次就和大家聊一聊深度学习中的概率。本文分享自华为云社区《【MindSpore易点通】深度学习中的概率》&#xff0c;作者&#xff1a; chengxiaoli。 为什么会用到概率呢&#xff1f;因为在深度学习中经常会需要处理随机的数据&#xff0c;或者包含随机性的任务…

Java基础之《netty(2)—IO模型、BIO介绍、NIO介绍》

一、IO模型 1、I/O模型简单的理解&#xff1a;就是用什么样的通道进行数据的发送和接收&#xff0c;很大程度上决定了程序通信的性能。 2、Java共支持3种网络编程模型I/O模式&#xff1a;BIO、NIO、AIO。 3、Java BIO&#xff1a;同步并阻塞&#xff08;传统阻塞型&#xff…

DeepCTR:易用可扩展的深度学习点击率预测算法包

这个项目主要是对目前的一些基于深度学习的点击率预测算法进行了实现&#xff0c;如PNN,WDL,DeepFM,MLR,DeepCross,AFM,NFM,DIN,DIEN,xDeepFM,AutoInt等,并且对外提供了一致的调用接口。 关于每种算法的介绍这里就不细说了&#xff0c;大家可以看论文&#xff0c;看知乎&#x…

做平台没有会员流量?没有客户留存?不妨来试试这个!超A分享购

商业模式最具有拓客引流的创新新模式&#xff0c;当属是“分享购”商业模式。 分享购是一个能够融合总流量与资源的商业运营模式&#xff0c;能够完成全部生态布局的应用&#xff0c;通过融合自营品牌、供应链选品、CPS生活服务等优质&#xff0c;可以实现“交易、共享”的新型…

Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)初级篇 ---- 服务调用

目录一、Ribbon负载均衡服务调用概述Ribbon负载均衡演示RestTemplateRibbon核心组件IRuleRibbon负载均衡算法原理&#xff08;RoundRobinRule原理&#xff09;源码&#xff08;RoundRobinRule&#xff09;手写负载算法二、OpenFeign服务接口调用概述使用步骤OpenFeign超时控制O…

鉴源论坛 · 观模丨浅谈随机测试

作者 | 黄杉 华东师范大学软件工程学院博士 苏亭 华东师范大学软件工程学院教授 首发 | 鉴源论坛 观模 01 什么是随机测试 &#xff08;Random Testing&#xff09; 随机测试是一种使用随机、相互独立的程序输入来对计算机程序进行测试的黑盒软件测试&#xff08;在完全忽…

疫情联防联控解决方案-最新全套文件

疫情联防联控解决方案-最新全套文件一、建设背景1、疫情防控数据涉及多方&#xff0c;共享难2、疫情数据使用实时性和准确性差3、敏感信息容易泄露和滥用4、建设成本高&#xff0c;后续扩展性弱二、思路架构三、建设方案四、获取 - 疫情联防联控全套最新解决方案合集一、建设背…

OA系统必备的五个基本要素

如果你正在寻找可以将工作流程提升到一个新水平的OA系统&#xff08;或办公自动化系统&#xff09;&#xff0c;请查看其是否具备以下五个基本功能。 1、简单的工作流设计器 一个现代的OA系统应该从业务用户的角度出发。 当你坐下来试用一个OA系统时&#xff0c;先从制定自…

spring中使用getBean获取ioc容器创建的对象常见异常

1、获取bean对象的三种基本方式 0、前提准备 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocat…

线性代数 --- 投影Projection 五(投影矩阵的性质)

投影矩阵的性质 1&#xff0c;投影矩阵不可逆。 行列式的值为0&#xff0c;条件数无穷大&#xff0c;说明该矩阵不可逆是一个奇异矩阵singular matrix。 同样&#xff1a;行列式的值为0&#xff0c;条件数趋近于无穷大&#xff0c;说明该矩阵不可逆是一个奇异矩阵singular matr…