定位及解决OOM

一、定义

内存溢出:OutOfMemoryError,是指因内存不够,导致操作新对象没有剩余空间。会导致频繁fullgc出现STW从而导致性能下降。

内存泄漏:指用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态。

二、主要外在体现

  • 应用程序长时间连续运行时性能下降;
  • CPU使用率高,甚至到100%;
  • 频繁fullgc,各种诸如接口超市等报警;
  • 应用程序偶尔会耗尽连接对象;

查看应用程序full gc时间:jstat -gc pid 间隔时间 显示次数:

三、造成OOM的原因

  • 一次性申请的对象太多。比如查数时表数据太多一次性到内存中处理,需要定位到具体的代码再优化;
  • 内存资源耗尽未释放。比如一些连接、线程等,应用完后释放,且用线程池的概念;
  • 本身资源不够。本身要处理一些日常的大对象工作,可以用jmap -heap 可以查看服务资源情况。

jmap -heap命令界面

四、定位OOM

1、系统已经OOM宕机

1.1、提前设置JVM参数

-XX:+HeapDumpOnOutOfMemoryError - XX:HeapDumpPath

在java程序启动时在jvm参数增加OOM时到处dump文件的命令,在应用发生OOM后会导出一个堆的dump文件到指定目录。需要在启动服务时设置参数,如果事前没有设置,出现OOM宕机后会无据可查。文件会比较大,因为会记录系统运行过程中所有的对象的信息,所以要保证磁盘空间较大。

java -Xms10M -Xmx10M -XX:+HeapDumpOnOutOfMemoryError - XX:HeapDumpPath=xxx -jar

1.2、工具:

visualvm:载入文件时,要注意文件类型是dump文件。主要看类目录下找到占内存最大且是自己开发创建的实例。双击进入后,随便定位其中一个实例,引用下找到GC Root,单击右键选择在线程中显示,就可以定位到具体的代码位置了。

2、运行中还未OOM

2.1、导出dump文件

jmap -dump:fromat=b,file=xxx.hprof 进程号(jps查看进程号);

导出OOM dump文件会导致一次full gc,会造成一次STW,所以是接收到频繁full gc或内存过高的告警后,为排查问题时快速定位OOM才去操作。

2.2、Arthas工具线上诊断。

可参考链接:Java诊断工具-Arthas保姆级教程_arthas定位内存泄漏-CSDN博客

2.3、jmap -histo:live 进程ID |head -20

会排序显示最占内存的对象,与dump文件查看实例差不多。|head -20:打印前20行。

3、结合jvisualvm进行调试

查看最多跟业务有关对象->找到GCROOT->查看线程栈,就可以快速定位业务代码了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一维坐标的移动(bfs)

在一个长度为n的坐标轴上,小S想从A点移动B点。 他的移动规则如下: 向前一步,坐标增加1。 向后一步,坐标减少1。 跳跃一步,使得坐标乘2。 小S不能移动到坐标小于0或大于n的位置。 小S想知道从A点移动到B点的最少步数是多…

四.排序(冒泡/选择)

目录 11-排序介绍 常见排序算法: 12-冒泡排序介绍 代码要求: 思路: 13-冒泡排序 代码: 14-选择排序 简单写法: 好的写法: 11-排序介绍 排序:将一组“无序”的记录序列调整为“有序”的记录序列。 列表排序:将无序列表变为有序列表 输入&#…

LeetCode 2312.卖木头块:动态规划(DP)

【LetMeFly】2312.卖木头块:动态规划(DP) 力扣题目链接:https://leetcode.cn/problems/selling-pieces-of-wood/ 给你两个整数 m 和 n ,分别表示一块矩形木块的高和宽。同时给你一个二维整数数组 prices ,其中 prices[i] [hi, …

SCI一区 | Matlab实现RIME-TCN-BiGRU-Attention霜冰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现RIME-TCN-BiGRU-Attention霜冰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现RIME-TCN-BiGRU-Attention霜冰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程…

面试经典150题(114-118)

leetcode 150道题 计划花两个月时候刷完之未完成后转,今天完成了5道(114-118)150 gap 了一周,以后就不记录时间了。。 114.(70. 爬楼梯) 题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不…

【CTF笔记】 CTF web方向笔记分享 免费 附预览图

个人不怎么记东西,笔记不多,师傅们凑合看… 百度网盘:https://pan.baidu.com/s/1PspihUX28Y_AOQZPurHqKA 麻烦各位师傅帮忙填写一下问卷,提取码在问卷填写结束后显示~ 【https://www.wjx.cn/vm/mBBTTKm.aspx# 】 (…

6大赚钱平台大揭秘,正规靠谱,电脑手机均可操作增收

找到一个真正靠谱的赚钱平台,无疑是你开启创收之旅的绝佳起点!接下来,我将为你提供一些建议,帮助你在这浩瀚的互联网世界中,稳稳地迈出赚取第一桶金的第一步。 参与调查问卷:像Swagbucks和YouGov这样的调查…

信号量——生产消费者模型

前文 在这一篇博客(信号量博客)中我曾经提及过信号量的知识,而当对信号量进行提炼总结时,大致是以下三点: 1. 信号量本质是一个计数器(代表资源的数量) 2. 申请信号量本质就是对资源的一种预定机…

AI大模型额外学习一:斯坦福AI西部世界小镇笔记(包括部署和源码分析)

文章目录 一、简单介绍1)项目代码介绍2)重新播放模拟3)适当修改分叉模拟 二、部署斯坦福小镇Demo1)准备工作2)解决遇到的bug3)启动服务器和前端 三、源码剖析1)主题顺序 github链接 一、简单介…

luceda ipkiss教程 62:等长波导布线(二)

教程 27介绍了两段波导等长布线的例子,下面同样是通过控制偏移量实现三段波导的等长布线: 所有代码如下: from si_fab import all as pdk from ipkiss3 import all as i3class demo(i3.Circuit):mmi i3.ChildCellProperty(doc"mmi in…

【面经八股】搜广推方向:面试记录(九)

【面经&八股】搜广推方向:面试记录(九) 文章目录 【面经&八股】搜广推方向:面试记录(九)1. 自我介绍2. 科研-项目经历问答3. 实习经历问答4. 八股5. 编程题6. 反问1. 自我介绍 。。。。。。 2. 科研-项目经历问答 挑了我的论文,一直揪着问,建议一定要熟悉自…

mysql主从复制/主从备份搭建

mysql主从复制/主从备份搭建 前言一、主从复制1)为什么使用主从复制、读写分离?2)主从复制原理 二、如何实现主从复制?1)主库配置1、修改配置文件2、登录mysql: 2)从库配置1、修改配置文件2、登…

函数-Python

师从黑马程序员 函数初体验 str1"asdf" str2"qewrew" str3"rtyuio" def my_len(data):count0for i in data:count1print(f"字符串{data}的长度是{count}")my_len(str1) my_len(str2) my_len(str3) 函数的定义 函数的调用 函数名&a…

爱恩斯坦棋小游戏使用C语言+ege/easyx实现

目录 1、游戏介绍和规则 2、需要用到的头文件 3、这里我也配上一个ege和easyx的下载链接吧,应该下一个就可以 4、运行结果部分展示 5、需要用到的图片要放在代码同一文件夹下 6、代码地址(里面有需要用到的图片) 1、游戏介绍和规则 规则如…

电学基础知识

目录 电流 前言 电流的产生 电流的单位安培(A) 电路和电池 开路和闭路 电灯泡原理 对电池容量的理解 毫安时 毫瓦时 直流电和交流电 AC交流电 DC直流电 直流电和交流电对比 电压 对电器的电压和电流的理解 电阻 电压电阻电子的关系 欧…

GateWay路由规则

Spring Cloud GateWay 帮我们内置了很多 Predicates功能,实现了各种路由匹配规 则(通过 Header、请求参数等作为条件)匹配到对应的路由 1 时间点后匹配 server:port: 8888 spring:application:name: gateway-servicecloud:nacos:discovery:…

超实用!免费软件站大盘点,总有一款适合你

相信用Mac电脑的同学都知道一个网站MacWK,可以白嫖几乎所有常用软件,不用付费,但不好的消息是在2022年10月宣布关站,小编从此走上了开源免费的道路,尽管不太好用,奈何口袋木有钱,经过小编的不断…

VS2022 配置QT5.9.9

QT安装 下载地址:https://download.qt.io/archive/qt/ 下载安装后进行配置 无法运行 rc.exe 下载VS2022 官网下载 配置 1.扩展-管理扩展-下载Qt Visual Studio Tools 安装 2.安装完成后,打开vs2022,点击扩展,会发现多出了QT VS Tools,点…

【学习学习】学习金字塔

学习金字塔(Cone of Learning),全称学习吸收率金字塔,是一种现代学习方式的理论。网上流传它是美国缅因州的国家训练实验室(National Training Laboratories)研究成果,用数字形式形象显示了采用…

数据分析-Pandas序列时间移动窗口化操作

数据分析-Pandas序列时间移动窗口化操作 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…