记一次堆内存泄漏排查过程

news2024/11/16 13:06:28

记一次堆内存泄漏排查过程

  • 前言
  • 定位问题

前言

写了一个升级脚本,执行过程中给内存干爆了,不作处理,自己又好了,神奇吗?

  • 日志中内存溢出:java.lang.OutOfMemoryError: Java heap space

定位问题

top命令查看最耗CPU的进程(进程:18382;CPU持续飙到595%+)
#输入top命令后键入P(大写P),进程按照CPU从高到底排序
top
在这里插入图片描述

  • 查看该进程中最耗CPU的线程(发现有一些线程占用CPU较高)
    #18382为进程号,键入P(大写P),该进程中的线程按照CPU从高到底排序
    top -Hp 18382
    在这里插入图片描述

  • 将线程号转为16进制,同时查看这些线程当前正在干什么(在此以17045线程为例)
    #将线程号转为16进制;其中17045为线程号
    printf ‘%x\n’ 17045
    #18382为进程号,0x4295为最耗CPU线程的十六进制
    jstack 18382| grep ‘0x4295’ -C10 --color
    在这里插入图片描述

  • 可以看到最耗CPU的线程都是在进行GC

  • 用Jmap命令查看当前堆的使用情况(发现老年代现在已占用99.8%+)
    #其中18382为进程号
    jmap -heap 18382

下图不是我分析的,是别人的,我做个笔记
在这里插入图片描述

  • 查看gc频率的命令(其中O代表老年代占用率,FGC是FullGC次数,FGCT是fullGC时间;可以看出在频繁FullGC但是老年代有资源一直释放不掉)
    #其中18382为进程号,5000是指每5秒(5000毫秒)输出一次
    jstat -gcutil 18382 5000

这个对我来说意义也不是很大
在这里插入图片描述

到此,我可以得出是因为堆内存溢出导致。

  • 分析问题产生原因
  • 在触发堆内存溢出的时候:执行命令
    生成dump文件命令
    #其中fileName是导出后dump名称,pid为进程号
jmap -dump:format=b,file=fileName.dump pid

将dump文件导出到本地,用visualVM.exe(下载地址:https://visualvm.github.io/) 进行分析
在这里插入图片描述

  • 查看对象
    在这里插入图片描述
    由此明白了,是因为sql查询返回的数据量太大导致的。

若有错误,希望大佬指出。
对你有帮助给点个👍再走呗。

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

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

相关文章

OceanBase云数据库战略实施两年,受零售、支付、制造行业青睐

2022年OceanBase推出云数据库产品OB Cloud,正式启动云数据库战略。两年来OB Cloud发展情况如何,9月26日,OceanBase公有云事业部总经理尹博学向记者作了介绍。 尹博学表示,OB Cloud推出两年以来,已服务超过700家客户,客…

遥感图像语义分割数据集制作(使用ArcGIS Pro)

0. 引言 图像分割就是把图像空间按照一定的要求分成一些“有意义”的区域的技术叫图像分割。一幅图像通常是由代表物体的图案与背景组成,简称物体与背景。若想从一幅图像中“提取”物体,可以设法用专门的方法标出属于该物体的点,如把物体上的…

鸿蒙界面开发(九):列表布局 (List)

列表布局 当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等&#xf…

【动态规划-多重背包】【hard】力扣2585. 获得分数的方法数

考试中有 n 种类型的题目。给你一个整数 target 和一个下标从 0 开始的二维整数数组 types ,其中 types[i] [counti, marksi] 表示第 i 种类型的题目有 counti 道,每道题目对应 marksi 分。 返回你在考试中恰好得到 target 分的方法数。由于答案可能很…

mac 上配置Jmeter代理进行web脚本录制过程容易踩坑的点

macOS 配置 Jmeter代理录制web脚本&容易踩坑的点 mac配置下载:前景提要:Jmeter中具体操作容易踩坑的点1、进入浏览器后,显示访问连接不安全。2、证书失效需要重新生成3、重新生成证书的方式4、没有生成新的证书5、jmeter安装路径找不到 m…

数据库实验2—1

10-1 查询重量在[40,65]之间的产品信息 本题目要求编写SQL语句&#xff0c; 检索出product表中所有符合40 < Weight < 65的记录。 提示&#xff1a;请使用SELECT语句作答。 表结构: CREATE TABLE product (Pid varchar(20), --商品编号PName varchar(50), --商品名称…

因为穷,研究了一些备考软考高级「系分」的省钱方法!

有大学生留言&#xff1a;老师推荐我们考软考高级-系统分析师&#xff08;简称“系分”&#xff09;&#xff0c;但是对于大学生来说每次考证都好贵啊&#xff01;报名费、各种备考资料、视频课程、官方教程......七七八八加起来不少钱了。有没有钱包不痛备考软考高级的方法&am…

springboot集成nacos+gateway+feign

一、创建项目 1.创建一个maven项目 2.添加对应的pom参数 2.1添加工程对应的jar包 <!-- 父工程 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.7</…

如何有效评估与最大化利用专利价值?

专利价值评估是确定专利经济价值的关键环节。对于企业而言&#xff0c;准确评估专利价值可以帮助其做出明智的决策&#xff0c;如是否进行专利的投资、许可、转让等。同时&#xff0c;专利价值评估也为金融机构提供了重要的参考依据&#xff0c;有助于推动专利质押融资、证券化…

GetThreadSelectorEntry teb peb 段选择子 LDT_ENTRY _LDT_ENTRY

GetThreadSelectorEntry 函数原型 BOOL GetThreadSelectorEntry([in] HANDLE hThread,[in] DWORD dwSelector,[out] LPLDT_ENTRY lpSelectorEntry ); typedef struct _LDT_ENTRY {WORD LimitLow;WORD BaseLow;union {struct {BYTE BaseMid;BYTE Flags1;BYTE Fla…

Chroma 向量数据入门

Chroma 是 AI 原生的开源矢量数据库。Chroma 使知识、事实和技能可插入 LLM&#xff0c;从而可以轻松构建 LLM 应用程序。Chroma 是 AI 原生的开源矢量数据库。Chroma 使知识、事实和技能可插入 LLM&#xff0c;从而可以轻松构建 LLM 应用程序。 &#x1f31f;Chroma是一个文档…

WIN2008 iis安装与ASP设置

win2008 IIS安装在 Windows Server 2008 系统中安装IIS - morgan363 - 博客园 如何在 Windows Server 2008 系统中安装 IIS 呢&#xff1f;且看如下分解&#xff1a; 1、鼠标右键 “计算机”&#xff0c;选择“管理”&#xff0c;打开“服务器管理器”。 2、在“服务器管理器”…

【永磁同步电机(PMSM)】 3. 基于Matlab 的仿真与控制

【永磁同步电机&#xff08;PMSM&#xff09;】 3. 基于Matlab 的仿真与控制 1. 电机的仿真与控制2. BLDC 电机与 PMSM 电机3. BLDC 的方波控制4. 磁场定向控制&#xff08;FOC&#xff09;5. 空间矢量调制 (SVM)6. PMSM 模型的频率响应估计 电机仿真和控制是能源生产、汽车、航…

C语言贪吃蛇小游戏演示和说明

C语言贪吃蛇小游戏演示和说明 设计贪吃蛇游戏的主要目的是让大家夯实C语言基础&#xff0c;训练编程思维&#xff0c;培养解决问题的思路&#xff0c;领略多姿多彩的C语言。 游戏开始后&#xff0c;会在中间位置出现一条只有三个节点的贪吃蛇&#xff0c;并随机出现一个食物&am…

cpu路、核、线程、主频、缓存

路&#xff1a;主板插口实际插入的 CPU 个数&#xff0c;也可以理解为主板上支持的CPU的数量。每个CPU插槽可以插入一个物理处理器芯片。例如&#xff0c;一台服务器可能有2路或4路插槽&#xff0c;这意味着它最多可以安装2个或4个物理处理器。 核&#xff1a;单块 CPU 上面能…

代码随想录算法训练营第十四天|递归 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度

226.翻转二叉树 翻转一棵二叉树。 思路&#xff1a; 在这里需要注意的是&#xff0c;在递归的时候唯独中序遍历是不可用的&#xff0c;这是因为先对左子树进行了反转&#xff0c;又对自身进行了反转&#xff0c;对自身反转后原本的左子树变成了右子树&#xff0c;如果此时又轮…

npm依赖安装的时候vue版本号报错处理

以下报错显示vue版本不对&#xff0c;需要改成这个版本"vue": "2.6.14"对应的版本 先看一下package.json中vue版本是多少 解决&#xff1a; npm install vue2.6.14

【重要提示】由于找不到msvcr110.dll 无法继续执行的解决途径全面解析

在使用Windows操作系统时&#xff0c;您可能会遇到这样的问题&#xff1a;某些应用程序在启动时提示“由于找不到 msvcr110.dll&#xff0c;无法继续执行代码。重新安装程序可能会解决此问题。” 这种错误通常会导致应用程序无法正常运行&#xff0c;影响用户体验。本文将全面介…

django开发流程1

一、官方网站&#xff1a; Django documentation | Django documentation | Djangohttps://docs.djangoproject.com/en/5.1/ 1.安装 django : pip install django 2. django项目的配置文件 (settings.py) BASE_DIR 项目根路径 DEBUG 调试模式 INSTALLE…

如何在算家云搭建CodeFormer(照片修复)

一、CodeFormer简介 CodeFormer 是一款强大的人工智能工具&#xff0c;专为处理低质量、损坏或模糊的面部图像而设计&#xff0c;主要用于图像和视频的修复和增强。它基于深度学习技术&#xff0c;通过先进的生成对抗网络&#xff08;GAN&#xff09;和自监督学习技术&#xf…