通过堆转储快照定位JVM堆内存OOM的问题

news2025/7/7 21:06:47

目录

  • 获取堆转储快照
    • JVM启动时增加参数
    • 通过jmap指令生成
  • 分析堆转储快照
    • Eclipse Memory Analyzer
      • 简介
      • 示例

获取堆转储快照

如何获取堆转储快照?常用的有两种方式:

JVM启动时增加参数

出现OOM时生成堆dump:

-XX:+HeapDumpOnOutOfMemoryError

指定生成的dump文件路径,不指定就在当前路径:

-XX:HeapDumpPath=/home/heap.hprof

示例:

java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heap.hprof -jar -Xms256m -Xmx256m test.jar &

通过jmap指令生成

在程序运行时执行指令,直接生成当前JVM的dump文件:

jmap -dump:format=b,file=/tmp/heap.hprof vmid

vmid通常就是pid(进程ID)

分析堆转储快照

Eclipse Memory Analyzer

简介

Eclipse Memory Analyzer可以分析堆转储快照。这个工具分为Eclipse插件版和独立版两种,如果你是使用Eclipse作为开发工具,那么可以使用插件版MAT,非常方便。

在这里插入图片描述

在这里插入图片描述

  • Retained Heap表示这个对象以及它所持有的其它引用(包括直接和间接)所占的总内存。
  • Shallow Heap就是当前对象自己所占内存的大小,不包含引用关系的。
  • Percentage就是它所占总内存的百分比。
  • 类名左下角那个小圆点表明该对象是GC Root。

示例

代码如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

运行代码,使用jmap指令dump出堆转储快照,然后用Eclipse Memory Analyzer进行分析。可以看到Strong、Soft、Weak三个类里的大字节数组。

在这里插入图片描述

对于Strong类里的字节数组,我们查看它到GC Roots的路径,这里选择排除软引用和弱引用。

在这里插入图片描述

可以看到它到GC Roots是可达的。

在这里插入图片描述

再看虚引用里的字节数组,查看它到GC Roots的路径,同样选择排除软引用和弱引用。

在这里插入图片描述

发现它到GC Roots是不可达的,到GC Roots不可达意味着垃圾收集时会被清理掉,所以如果发生了OOM,那罪魁祸首肯定不是它。

在这里插入图片描述

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

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

相关文章

【2325. 解密消息】

来源:力扣(LeetCode) 描述: 给你字符串 key 和 message ,分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下: 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。将…

【数据结构初阶】第六篇——二叉树的重要性质

树的概念及结构 树的概念 树中专有名词 树的表示 二叉树的概念及其重要性质 二叉树的概念 数据结构中的二叉树 特殊的二叉树 二叉树的性质 二叉树的存储结构 顺序结构 链式结构 树的概念及结构 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有…

【算法】Brute-Force 算法

目录1.概述2.代码实现本文参考: 《数据结构教程》第 5 版 李春葆 主编 1.概述 (1)设有两个串 s 和 t,串 t 的定位就是要在串 s 中找到一个与 t 相等的子串。通常把 s 称为目标串(target string),把 t 称为模式串(patt…

flutter 之 ListView的使用与详解 map for listview.builder 的使用

1.ListView 配合ListTile 实现新闻列表样式 ListView(children: <Widget>[ListTile(title: const Text(我是 title),subtitle: const Text(我是 sub_title),leading: Image.asset(images/c.png,fit: BoxFit.cover,),trailing: const Icon(Icons.chevron_right,size: 22,…

九龙证券|港股盘中暴涨110%!多股涨停,有色、汽车板块爆发!

阴历兔年春节后第三个交易日上午&#xff0c;A股首要指数重回涨势&#xff0c;全体走势略显震动胶着。北向资金持续呈现净买入趋势&#xff0c;半响净买入额到达30.61亿元。 港股方面&#xff0c;全体体现也较好&#xff0c;恒生科技指数领涨。港股个股方面亮点纷呈&#xff0c…

信息安全管理体系认证

​ISO信息安全管理体系认证 一、什么是ISO信息安全管理体系认证&#xff1f; ISO是信息安全管理体系认证&#xff0c;是由国际标准化组织&#xff08;ISO&#xff09;采纳英国标准协会BS-2标准后实施的管理体系&#xff0c;成为了“信息安全管理”的国际通用语言&#xff0c;企…

Unity Shader - Curved World - 类似 地铁跑酷,动物森友会 的世界扭曲效果 - 球形透视

我发现莉莉丝的《神觉者》在战斗中也有使用到这个效果&#xff0c;视觉效果提升还是很大的 比如&#xff0c;球形投影前的效果 球形投影后的效果 GIF: ShaderLab cginc 固定 Vector.forward 方向的球形透视 参考&#xff1a; Shader in Unity & Curved world shader …

Nacos学习:二、配置中心

2. 配置中心 配置中心将配置从各应用中剥离出来&#xff0c;对配置进行统一管理&#xff0c;应用自身不需要自己去管理配置。 配置中心的服务流程如下&#xff1a; 1、用户在配置中心更新配置信息。 2、服务A和服务B及时得到配置更新通知&#xff0c;从配置中心获取配置。 …

uni-app - H5 网站项目接入集成 51LA 网站统计详细教程(提供 51LA.js 官方插件与引入教程)

前言 如果您需要 Nuxt.js H5 网站项目的引入方式,请访问:Nuxt.js - 网站项目接入 51LA 网站统计 这个需求不常见,网上几乎没有教程,本文来做最新最好用的引入方案。 本文实现了 uniapp 开发的 H5 网页项目,要求接入 51LA 网站统计 的需求, 跟着本文,简简单单的几个步骤…

【HTML】有趣的代码合集(附源码)

文末有源码下载&#xff0c; “窝” 不信你全都看不上 文章目录CSS3 登录表单 个性化登录按钮可爱的CSS3圆盘时钟动画jQuery登录表单CSS3超酷弹出对话框 兼容移动端HTML5翻牌消除小游戏交互式分享按钮 可横向展开HTML5文件上传美化表单 支持拖拽上传纯CSS3加载Loading动画图 12…

unity怎样让玩家在不同材质上行走具有不同脚步声音效

问题:玩家在草地,雪地,木板上行走需要不同的脚步声音效,且无论行走还是奔跑,音效都要和脚步动画同步.思路:在动画上添加事件触发脚步声音效,并判断地面的材质然后播放不同的音效.实现:一.判断地面材质第一种情况是在unity内置terrain上行走地面有草地,石地,木地等,需要有不同音…

【蓝桥杯】历届试题 成绩统计(省赛)Java

【资源限制】 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 【问题描述】 小蓝给学生们组织了一场考试&#xff0c;卷面总分为 100 分&#xff0c;每个学生的得分都是一个 0 到 100 的整数。…

计算机网络概念:

CDN:全国各地因为距离,加速响应,也因此可以节省带宽成本.DNS:域名解析器OSI七层模型:应用层:类比填写的数据报文表示层:类比浏览器层会话层:类比cookie或者token记录上次信息传输层:所谓的三次握手和四次挥手发生在这一层,进程到进程网络层:类似于ip通过路由器找到另一ip,服务器…

Web3中文|元宇宙如何更具包容性?

一旦新技术在发展过程中发生意外&#xff0c;受到最大伤害的往往会是边缘化的群体。 打个比方&#xff0c;自动决定内容访问权限和图像阐释方式的算法实际上受到了种族主义和性别歧视的影响。而拥有多种边缘化身份的人通常面临更大的风险。 这就是为什么当我听到马克扎克伯格…

Linux系统Shell脚本第六章:文件三剑客之sed

目录 一、文本三剑客之sed 1、基本用法 2、sed脚本语法及命令 3、sed选项 4、sed的查找替换使用 5、后向引用 6、变量 一、文本三剑客之sed 1、基本用法 sed [选项]... {自身脚本语法};.... [input file...] 举例&#xff1a; seq 5 |sed #生成1-5数字传给sed #该…

配置python虚拟环境配置【Pycharm为例】 2023年2月1日 14点43分

文章目录1. 新建一个项目2. 新建文件&#xff0c;创建项目3. 此时文件结构4. 安装环境样例5. 检查当前环境点击【解释器设置】点击同开头设置环境6. 开始安装根目录下有这个文件点击【终端】7. 激活虚拟环境7.1 如果出现以下错误([参考链接](https://blog.csdn.net/e5pool/arti…

大数据是干什么的,TOOM大数据舆情监测系统数据挖掘

舆情数据挖掘是指从大量的舆情数据中&#xff0c;通过使用数据挖掘、机器学习等技术&#xff0c;对舆情数据进行分析处理&#xff0c;提取有价值的信息&#xff0c;从而得到舆情分析结果。舆情数据挖掘的目的是了解舆论趋势、话题热点、网民情绪等&#xff0c;为决策提供数据支…

PowerBI实用技巧——利用DATEDIFF实现时间进度百分比

需求概述&#xff1a;根据系统默认时间当年1月~当年12月为一年&#xff08;或指定财年&#xff09;进行时间百分比进度展示。一、默认正常时间进度实现效果&#xff0c;例如现在系统是2023年2月1日&#xff0c;截止当前年时间已经过去了全年的8.49%.1.解决思路&#xff1a;首先…

【Faster R-CNN】之 backbone 代码精读

1、前言 在上一篇文章 【Faster R-CNN】之 Resize_and_Padding 代码精读 中&#xff0c;我们得到了图像尺寸统一的 batch 了&#xff0c;接下来&#xff0c;就是 feed 到 backbone 中 获取 feature map。 2、backbone 1&#xff09;这里的 backbone 其实就是 迁移学习&#…

什么是数据治理?

我们这些搞数据治理的人&#xff0c;几乎每天都会说到“数据治理”这个词。但有很多人依然不清楚数据治理的确切含义&#xff0c;也搞不懂数据治理和数据管理的关系。这一节&#xff0c;我们就来认真辨析“数据治理”这个词。首先&#xff0c;我们来看一看国际数据管理协会DAMA…