【10个OOM异常的场景以及对应的排查经验】

news2024/11/18 23:50:49

文章目录

  • 1. 场景描述:内存泄漏
  • 2. 场景描述:过多线程
  • 3. 场景描述:大量数据查询
  • 4. 场景描述:大文件读取
  • 5. 场景描述:高并发访问
  • 6. 场景描述:大字符串操作
  • 7. 场景描述:大数据集合操作
  • 8. 场景描述:大对象创建
  • 9. 场景描述:JVM 参数配置不合理
  • 10. 场景描述:JVM 内存资源不足

在这里插入图片描述

1. 场景描述:内存泄漏

应用程序执行期间不断分配内存,但未回收已分配的内存,导致应用程序耗尽可用内存并发生 OOM 异常。
排查经验:
1)使用 Java 内置工具 jmap 和 jstat 监测内存使用情况。
2)使用 Java 内置工具 jhat 分析内存转储文件,查找内存泄漏的对象。
3)使用工具如 Eclipse Memory Analyzer 和 VisualVM 进行内存分析,找出内存泄漏的根本原因。

2. 场景描述:过多线程

应用程序使用过多的线程,耗尽可用内存。
排查经验:
1)使用工具如 VisualVM 或 jconsole 监测线程数。
2)使用 Java 内置工具 jstack 分析线程转储文件,找出执行时间过长的线程,进行优化。
3)使用线程池等技术进行线程管理,限制线程池大小并拒绝过多的任务提交。

3. 场景描述:大量数据查询

应用程序执行大量的数据库查询操作,导致内存不足。
排查经验:
1)使用 SQL 优化技巧,减少查询次数。
2)使用缓存技术,将查询结果缓存到内存中。
3)使用分页技术,将查询操作分批进行。

4. 场景描述:大文件读取

应用程序在读取大文件时,将文件全部读取到内存中,导致内存不足。
排查经验:
1)使用流技术,将文件分块读取并处理。
2)使用内存映射文件技术,将文件映射到内存中操作。
3)使用缓存技术,将读取结果缓存到内存中。

5. 场景描述:高并发访问

应用程序在高并发访问时,每个请求都会创建一个线程或者进程,导致内存不足。
排查经验:
1)使用线程池技术,控制线程数量。
2)使用进程池技术,控制进程数量。
3)使用消息队列等技术进行削峰填谷,均衡请求分布。

6. 场景描述:大字符串操作

应用程序处理大字符串时,将字符串全部读入内存,导致内存不足。
排查经验:
1)使用流技术,将字符串分块读取并处理。
2)使用字符串压缩技术,减少字符串占用内存。
3)使用字符串切片技术,将字符串切分并处理。

7. 场景描述:大数据集合操作

应用程序处理大数据集合时,将数据集合全部读入内存,导致内存不足。
排查经验:
1)使用分块读取和分批处理技术,将数据集合分成多个子集合进行处理。
2)使用缓存技术,将部分数据集合缓存到内存中。
3)使用压缩技术,将部分数据集合压缩以减少内存占用。

8. 场景描述:大对象创建

应用程序创建大对象时,内存不足。
排查经验:
1)使用对象池技术,重用已经创建的对象。
2)使用懒加载技术,只在需要的时候创建对象。
3)使用分布式技术,将对象分散到多个节点中存储。

9. 场景描述:JVM 参数配置不合理

应用程序的 JVM 参数配置不合理,导致内存不足。
排查经验:
1)使用 JVM 参数监测工具,监测 JVM 参数配置。
2)根据应用程序的实际需求,调整 JVM 参数配置。
3)使用 JVM 内置工具 jstat 监测 JVM 内存使用情况。

10. 场景描述:JVM 内存资源不足

应用程序所在的服务器的内存资源不足,导致内存不足。
排查经验:
1)使用服务器监测工具,监测服务器内存使用情况。
2)增加服务器内存资源。
3)使用应用服务器等技术,将应用程序部署到多个服务器上,进行负载均衡。

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

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

相关文章

C语言-扫雷游戏的实现

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

反射【Java】

概念:允许对成员变量,成员方法和构造方法的信息进行编程访问 获取class对象 Class.forName("全类名"); //全类名:包名类名 类名.class 对象.getClass(); //有一个名为Goods的类Class clazz1 Class.forName("com.ln1.Goo…

VR赋能红色教育,让爱国主义精神永放光彩

昨天的918防空警报长鸣,人们默哀,可见爱国主义精神长存。为了贯彻落实“把红色资源利用好、红色传统发扬好、红色基因传承好”的指示精神,许多红色景点开始引入VR全景展示技术,为游客提供全方位720度无死角的景区展示体验。 VR全…

【电源专题】什么是充电芯片的Shipping Mode(船运模式)

现在越来越多电子产品小型化,手持化,这样就需要电池来为产品供电。但电池供电造成的另一个难题就是产品的续航能力的强与弱。 如果想提升续航能力,有一种方法是提高电池容量。如果电池体积没有变化的情况下,可能使用了新型材料、高级技术来增加电池容量,但这势必会增加电池…

Webpack设置代码映射,可调试打包后的代码

当我们的代码打包过后再看源码就会变成下面这个样子: 这时候我们就调试不了我们的代码 解决方式: 在webpack.config.js中添加如下代码: module.exports {mode: "development", // 设置打包的模式:production生产模式…

2000-2021年上市公司劳动投资效率测算数据:劳动投资效率、冗余雇佣、雇佣不足(含原始数据和计算代码do文档)

2000-2021 年上市公司劳动投资效率测算数据:劳动投资效率、冗余雇佣、雇佣不足 (含计算代码do文档) 1、时间:2000-2021 年 2、范围:沪深A 股上市公司 3、指标:code、year、证券代码、货币资金、短期投资…

TexStudio报错 Class: No Found

\classdocument[preprint,review,fleqn,sort&compress,3p]{elsarticle}这里常见导入的类(class)文件有article.cls,elsarticle.cls,sn-jnl.cls等 一般来说这些文件都应该和我们的源文件document.tex在同一个目录下。如果不在…

Vue复选框批量删除示例

Vue复选框批量删除 通过使用v-model指令绑定单个复选框 例如<input type"checkbox" id"checkbox" v-model"checked"> 而本次我们要做的示例大致是这样的&#xff0c;首先可以增加内容&#xff0c;然后通过勾选来进行单独或者批量删除&…

chk文件怎么恢复?chk文件恢复软件哪个好?

电脑中的每个文件都有其不同的后缀名&#xff0c;如.txt、.png等等&#xff0c;那么你知道.chk后缀的文件是什么吗&#xff1f;下面我们就来一起了解一下吧。 chk文件的含义 chk文件是用户在使用磁盘碎片整理程序后所产生的丢失簇的恢复文件&#xff0c;磁盘中的原文件并没有丢…

0基础学three.js环境搭建(2)

这是0基础学three.js系列中的第二篇&#xff0c;在这篇里面我会带着大家把开发环境搭建起来&#xff0c;关于开发环境&#xff0c;方式很多&#xff0c;如果你没有基础&#xff0c;就跟着我的步骤一步一步来&#xff0c;保你不出错。 首先安装node环境&#xff0c;关于node是干…

操作系统、进程和线程

目录 一、操作系统 二、进程/任务&#xff08;Process/Task&#xff09; 1. 什么是进程/任务 2. 进程控制块抽象&#xff08;PCB Process control Block&#xff09; 3. CPU分配 —— 进程调度&#xff08;Process Scheduling&#xff09; 4. 内存分配 —— 内存管理&…

【Redis】第5讲 Redis的下载并安装

下载Redis中文网https://www.redis.net.cn/ 百度网盘下载&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://p…

软件测试这些基本类型你知道吗?

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 关于软件测试的类型&#xff0c;从不同角度来讲&#xff0c;可以分很多种&#xff0c;有时候甚至觉得软件…

深入理解Elasticsearch中的Match Phrase查询

文章目录 摘要Match Phrase查询的原理Match Phrase查询的用法Match Phrase查询的示例代码 Match Phrase查询的注意事项总结 摘要 Elasticsearch是一个功能强大的开源搜索引擎&#xff0c;它提供了丰富的查询功能。其中&#xff0c;Match Phrase查询是一种强大的查询类型&#…

1784_C语言实现常用的复数运算

全部学习汇总&#xff1a; GitHub - GreyZhang/c_basic: little bits of c. 这是最近学习的C语言数据结构的中的案例&#xff0c;但是没有给出具体的实现代码。根据自己的学习水平简单编写了一下&#xff0c;倒是能够计算与输出&#xff0c;但是不知道还有没有什么缺陷。 借用…

C++笔记之文档术语——将可调用对象作为函数参数

C笔记之文档术语——将可调用对象作为函数参数 相关博文&#xff1a;C笔记之函数对象functors与可调用对象 文章目录 C笔记之文档术语——将可调用对象作为函数参数1.在函数参数中传递可调用对象2.‘在参数中传入可调用对象’和‘将可调用对象作为函数参数’哪个描述更加专业…

MyBatis友人帐之使用注解开发

一、利用注解开发 mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到MyBatis 3提供了新的基于注解的配置。不幸的是&#xff0c;Java 注解的的表达力和灵活性十分有限。最强大的 MyBatis 映射并不能用注解来构建 sql 类型主要分成 : select () update …

由union引发的Struct占用内存空间和大小端问题的思考

1. 背景 在看Lua源码的时候&#xff0c;很多地方都用到了union&#xff08;共用体或者联合体&#xff09;&#xff0c;在定义lua类型的时候&#xff0c;为了以一个结构来包含所有的数据类型&#xff0c;设计了一个 TValue类型&#xff0c;TValue类型最终关联到 Value类型&#…

番茄小说推文和番茄短剧推广怎么申请授权

番茄小说推文和番茄短剧推广都可以通过“巨量推文”进行授权 番茄小说是一个独立的小说平台&#xff0c;他们在推文市场有推广预算后交给我们达人进行推广&#xff0c;推广完成后可以获得番茄小说的cpa拉新奖励 番茄短剧和番茄小说类似&#xff0c;只是一个是推广短剧的平台一…

VisualStudio配置opencv

下载opencv 链接&#xff1a;https://opencv.org/releases/ 我下载的是4.7.0&#xff0c;选择windows下载。 下载成功后打开exe文件&#xff0c;选择路径安装。 配置环境变量 安装成功后找到安装目录&#xff0c;复制bin目录路径。 我的是放在了D盘 D:\Opencv4.7.0\opencv…