使用MAT进行内存分析,并找到OOM问题

news2024/11/24 23:03:25

前言

在处理一次现场问题时,发现服务还在运行,但是出现假死情况,后通过分析GC日志以及使用MAT分析确定问题是内存溢出OutOfMemery(OOM);这里只记录MAT分析学习过程,最近工作忙,补记录。
GC日志分析

首先,如果明确了是哪个服务出现了问题,就可以使用
ps -aux | grep 服务名查看PID,如果是jar启动,在jvm中,则使用:jps 进程号
如果不能明确,可使用top命令查看cup占用率,来分析是哪个服务内存出了问题;
然后在出现问题时,对堆及内存对象进行快照,可以导出快照dump对它进行分析;
jmap -dump:live,format=b,file=wanfile.dump PID,会导dump问题到当前目录下,你可以指定目录导出。

在这里插入图片描述

注意

1、不同的 JAVA虚机的线程 DUMP的创建方法和文件格式是不一样的,不同的 JVM版本, dump信息也有差别
2、你要确保是快照是能照到出现的问题,不能重启或者问题没发生,就进行快照,这样是找不到问题所在的。

jstack,jmap,jhat使用介绍

用于JVM当前时刻的线程快照,又称threaddump文件,它是JVM当前每一条线程正在执行的堆栈信息的集合。生成线程快照的主要目的是为了定位线程出现长时间停顿的原因,如线程死锁、死循环、请求外部时长过长导致线程停顿的原因。

#1.jstack 
jstack <PID>
jstack -F <PID> # 有时候线程挂起的时候要加上-F参数才能把信息dump处理
jstack -F -l pid (查出某个进程中运行的所有线程)
生成进程下所有线程的栈日志:jstack <PID> > test.txt
#2.jmap
#提取进程内存信息,用于分析OOM导致原因如下,其中(format=b是通过二进制的意思)
jmap -dump:format=b,file=HeapDump.bin <pid>
#输出堆信息
jmap -heap <PID>
#jhat简单分析内存中对象情况
#读取dump文件,生成报告,并启动WEB服务器,默认端口为7000
jhat -J-mx768m -stack false HeapDump.bin 

回归正题,现在我们已经导出了dump,那么我们使用MAT来对该内存进行分析,

我个人喜好用MAT,你也可以使用JDK自带的jvisualvm,或者有钱的话使用商业JProfil

打开mat,并导入dump
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • shallow heap 表示对象本身占用内存的大小,也就是对象头加成员变量(不是成员变量的值)的总和。

  • retained heap
    如果一个对象被释放掉,那会因为该对象的释放而减少引用进而被释放的所有的对象(包括被递归释放的)所占用的heap大小,即对象被垃圾回收器回收后能被GC从内存中移除的所有对象之和。相对于shallow
    heap,Retained heap可以更精确的反映一个对象实际占用的大小(若该对象释放,retained heap都可以被释放)。

在这里插入图片描述
在这里插入图片描述
定位问题,该定时任务,定时执行时间过快,涉及到merge into循环操作,对象还创建完,就开始了下一次执行,GC都没回收完,导致内存溢出

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

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

相关文章

EM@三角函数诱导公式

文章目录诱导公式单位圆坐标和三角函数记忆口诀符号看象限奇变偶不变例常用诱导公式&#x1f388;常用部分(5对)倒数关系六种三角函数间的转换关系小结ReflectionsShifts and periodicity诱导公式 诱导公式 - 维基百科&#xff0c;自由的百科全书 (wikipedia.org) 单位圆坐标…

推送投票制作微信推送里投票制作教程在线投票活动制作

近些年来&#xff0c;第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放&#xff0c;更多人选择微信投票小程序平台&#xff0c;因为它有非常大的优势。1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…

一文看懂网上下单的手机流量卡为什么归属都是随机的!

最近很多网上下单的小伙伴们心中似乎都有一个疑问。那就是网上很多手机卡、流量卡都不能自选号码和归属地&#xff0c;就算能自选号码&#xff0c;归属地也是随机的而且很多都不会跟你说具体的城市&#xff0c;这是为什么呢&#xff1f;莫非其中有什么不可告人的秘密吗?小伙伴…

JetBrains IntelliJ支持自动切换输入法,写代码如丝般顺滑

背景简介对于母语为中文的开发者&#xff0c;写代码过程中经常需要在中/英输入法之间进行切换&#xff0c;而且由于不清楚当前处于哪种输入状态&#xff0c;有时输入到一半发现输入法错了&#xff0c;删除重新输入&#xff0c;有时切换了好几次都没有成功&#xff0c;实在太影响…

【强化学习】强化学习数学基础:蒙特卡洛方法

强化学习数学方法&#xff1a;蒙特卡洛方法举个例子举个例子1&#xff1a;投掷硬币The simplest MC-based RL algorithm举个例子2&#xff1a;Episode lengthUse data more efficientlyMC without exploring starts总结内容来源将value iteration和policy iteration方法称为mod…

无线耳机哪个品牌好一点?2023四款好用的无线耳机排行

随着蓝牙耳机的普及&#xff0c;越来越多的耳机厂商加入蓝牙耳机这条竞争赛道。不同品牌的蓝牙耳机又有着不同的价位区间&#xff0c;不同的性能配置&#xff0c;不同的外观设计&#xff0c;可以说现在的蓝牙耳机多到让人在选择时眼花缭乱。那么&#xff0c;无线耳机哪个品牌好…

云端需求助力跑赢周期,金山办公有望借助ChatGPT加速腾飞

与微软在办公领域“搏杀”了三十年的金山办公&#xff0c;或许正在迎来自己的“第二春”。2月25日&#xff0c;金山办公&#xff08;688111&#xff09;发布2022年度业绩快报&#xff0c;全年营收38.85亿元人民币&#xff08;单位下同&#xff09;&#xff0c;同比增加18.44%&a…

智慧工厂数字孪生可视化监测系统有效提升厂区安全管控效力

我国制造业正处于产业升级的关键时期&#xff0c;基于数据进行生产策略制定与管理是大势所趋&#xff0c;而数据可视化以更直观的方式成为数据分析传递信息的重要工具。 深圳华锐视点通过三维可视化手段对工厂各类设备进行三维建模&#xff0c;真实复现设备设施外观、结构、运转…

基于卷积神经网络CNN的分类研究,基于卷积神经网络的手写体识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN手写体识别 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活&#xff0c;各种人工智能都要求对图像拥有识别…

Linux内核4.14版本——drm框架分析(1)——drm简介

目录 1. DRM简介&#xff08;Direct Rendering Manager&#xff09; 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势 1.3 DRM图形显示框架 1.4 DRM图形显示框架涉及元素 1.4.1 DRM Framebuffer 1.4.2 CRTC 1.4.3 Encoder 1.4.4 Connector 1.4.5 Bridge 1.4.6 Panel 1.4.…

双指针法将时间复杂度从 O(n^2) 优化到 O(n)

[1] 什么是双指针法 双指针法&#xff08;Two Pointers&#xff09;是一种常见的算法技巧&#xff0c;常用于数组和链表等数据结构中。 双指针法的基本思想是维护两个指针&#xff0c;分别指向不同的位置&#xff0c;通过它们的移动来解决问题。在某些情况下&#xff0c;使用双…

【Leetcode】移除链表元素 链表的中间节点 链表中倒数第k个节点

目录 一.【Leetcode203】移除链表元素 1.链接 2.题目再现 A.双指针法 B.类尾删法 C.哨兵位 二.【Leetcode876】链表的中间节点 1.链接&#xff1a;链表的中间节点 2.题目再现 3.解法&#xff1a;快慢指针 三.链表中倒数第k个节点 1.链接&#xff1a;链表中倒数第k个…

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像1、报警信息1.1、报警查询1.2、配置开启报警订阅1.2.1、国标设备编辑1.2.2、选择开启报警订阅1.3、配置摄像头报警1.3.1、配置摄像头报警通道ID1.3.2、配置摄像头开启侦测1.3.3、尝试触发摄像头…

企业为什么需要做APP安全评估?

近几年新型信息基础设施建设和移动互联网技术的不断发展&#xff0c;移动APP数量也呈现爆发式增长&#xff0c;进而APP自身的“脆弱性”也日益彰显&#xff0c;这对移动用户的个人信息及财产安全带来巨大威胁和挑战。在此背景下&#xff0c;国家出台了多部法律法规&#xff0c;…

【架构师】跟我一起学架构——微服务分层监控

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;软件设计师/鸿蒙高级工程师认证&#xff0c;在备战高级架构师/系统分析师&#xff0c;欢迎关注小弟&#xff01; 博主小留言…

机器学习与目标检测作业:安装pytorch

机器学习与目标检测作业&#xff1a;安装pytorch一、 进入官网复制下载命令二、 下载的过程2.1 conda命令运行三、 测试pytorch是否安装成功安装pytorch教程 一、 进入官网复制下载命令 进入官网复制下载命令如下图所示 二、 下载的过程 下载的过程如下图所示 2.1 conda命令运…

vue3中引入初始化样式

1、创建一个reset.css文件 2、文件内容为&#xff1a; css charset “utf-8”;html{background-color:#fff;color:#000;font-size:12px} body,ul,ol,dl,dd,h1,h2,h3,h4,h5,h6,figure,form,fieldset,legend,input,textarea,button,p,blockquote,th,td,pre,xmp{margin:0;padding…

华为机试题:HJ100 等差数列(python)

文章目录&#xff08;1&#xff09;题目描述&#xff08;2&#xff09;Python3实现&#xff08;3&#xff09;知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

芯驰(E3-gateway)开发板环境搭建以及调试遇到问题的解决

1-Windows下环境配置 可以在Windows上使用命令行或者IAR IDE编译SSDK项目。Windows编译依赖的工具已经包含在 prebuilts/windows 目录中&#xff0c;包括编译器、Python和命令行工具。 1.1.1 CMD SSDK集成 msys 工具&#xff0c;可以在Windows命令行中完成SDK的配置、编译和…

零入门kubernetes网络实战-19->golang编程netlink包方式操作tun设备

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章介绍一下&#xff0c;使用 github.com/vishvananda/netlink 来操作tun设备 1、安装github.com/vishvananda/netlink go get github.com/vishvanan…