常见的OOM 问题的 6 种场景

今天跟大家一起聊聊线上服务出现 OOM 问题的 6 种场景,希望对你会有所帮助。
图片

一、堆内存 OOM

堆内存 OOM 是最常见的 OOM 了。

出现堆内存 OOM 问题的异常信息如下:

java.lang.OutOfMemoryError: Java heap space

此 OOM 是由于 JVM 中 heap 的最大值,已经不能满足需求了。

举个例子:

public class HeapOOMTest {
   

    public static void main(String[] args) {
   
        List<HeapOOMTest> list = Lists.newArrayList();
        while (true) {
   
            list.add(new HeapOOMTest());
        }
    }
}

这里创建了一个 list 集合,在一个死循环中不停往里面添加对象。

执行结果:

图片

出现了 java.lang.OutOfMemoryError: Java heap space 的堆内存溢出。

很多时候,excel 一次导出大量的数据,获取在程序中一次性查询的数据太多,都可能会出现这种 OOM 问题。

我们在日常工作中一定要避免这种情况。

二、栈内存 OOM

有时候,我们的业务系统创建了太多的线程,可能会导致栈内存 OOM。

出现堆内存 OOM 问题的异常信息如下:

java.lang.OutOfMemoryError: unable to create new native thread

给大家举个例子:

public class StackOOMTest {
   
    public static void main(String[] args) {
   
        while (true) {
   
            new Thread().start()

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

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

相关文章

Git的原理和使用(四)

目录 远程操作 理解分布式版本控制系统 远程仓库 新建远程仓库 克隆远程仓库 向远程仓库推送 拉取远程仓库 配置Git 忽略特殊文件 为命令配置别名 标签管理 理解标签 创建标签 操作标签 远程操作 理解分布式版本控制系统 1、每个人的电脑上都是一个完整的版本库…

批量重命名文件名,批量管理文件,复制后轻松删除原文件

在现代工作中&#xff0c;我们经常需要处理大量的文件&#xff0c;无论是工作文档、图片还是视频资料。对于很多人来说&#xff0c;文件管理是一项繁琐且耗时的任务。不过&#xff0c;现在有一种高效的文件管理方法&#xff0c;可以帮助你轻松复制文件后删除原文件夹&#xff0…

2024.03.24 exam

2024.03.24 exam 据说是事业单位考试例题&#xff0c;娱乐一下脑子

zabbix安装及使用(错误及解决方案)

安装zabbix 常见错误&#xff1a; Zabbix下载错误 6.0与5.0版本冲突 解决方法 yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-get --skip-broken zabbix6.0-web 自己有数据库&#xff0c;使用以下命令 pid找不到 /var/log/zabbix/zabbix_server.log 错误&a…

Docker Command

小试牛刀 # 查看docker版本 docker -v docker --version # 查看帮助 docker --help # 永远的Hello World docker run hello-world镜像操作 查看本地已有的镜像 docker images -a :列出本地所有的镜像&#xff08;含中间映像层&#xff09; -q :只显示镜像ID --digests :显示…

尝试Docker Dev Environments

无法从本地目录创建容器环境 创建的容器环境无法在VS Code打开 从官方仓库打开 结果vscode报错。fine&#xff0c;告辞。老老实实用本地环境开发。

为什么LLM都在卷上下文长度?不是其他卷不起,而是上下文更有性价比!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

深度学习pytorch——2D函数优化实例(持续更新)

课程&#xff1a;课时46 优化问题实战_哔哩哔哩_bilibili 这就是我们今天要求的2D函数&#xff1a; 下图是使用python绘制出来的图像&#xff1a; 但是可以看出有4个最小值&#xff0c;但是还是不够直观&#xff0c;还是看课程里面给的比较好&#xff0c;蓝色是最低点位置&am…

哲学♂家带你用动态内存函数实现二维数组

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、思路分析 二、实现 总结 前言 最近在做题的时候发现一个比较考验技术的问题&#xff0c;用内存函数模拟实现二维数组&#xff0c;接下来给大家演示一下我的做…

20240318-2-推荐算法Graph_Embedding

Graph Embedding 在许多推荐场景下&#xff0c;可以用网络结构数据来刻画对象&#xff08;用户、商品等&#xff09;之间的关系。例如&#xff1a;可以将用户和商品作为网络中的结点&#xff0c;用户和商品之间的边代表购买关系。 Graph Embedding 是一种将网络中对象之间的关…

python项目格式代码风格

Visual Studio Code 选择使用 black 作为代码格式化工具&#xff0c;保证提交代码风格的统一 1. Install black pip install black2. Install black and isort extension for vscode: 3. 设定black及isort的格式化配置 3.1. ctrl , 打开配置面板 3.2. 在弹出的json配置中添…

域名防红源码-再次启用已经红掉拦截的域名-提示跳转浏览器打开

比如说你的域名已经红掉了被拦截了&#xff0c;还想继续在使用&#xff0c;那么你用这个系统后呢&#xff0c;他就会提示跳转浏览器打开。以此达到再次启用的效果。 假如你的域名是A&#xff0c;已经红掉的&#xff1b;使用此方法新加一个域名B&#xff1b;之后你每次发域名B或…

【理解机器学习算法】之Clustering算法(K-Means)

实现 K-means 聚类从零开始涉及几个关键步骤&#xff1a;初始化质心、将点分配给最近的质心、根据分配更新质心&#xff0c;以及重复这个过程直到收敛。这里是一个基本的 Python 实现&#xff1a; K-means 算法步骤&#xff1a; 初始化质心&#xff1a;从数据点中随机选择 k …

docker推拉时的数据交换详解

前言 docker用了这么久了, 有没有想过, 在执行docker push 和 docker pull命令的时候, 数据是如何传递的呢? 换句话说, 如果要实现一个镜像仓库, 针对推拉的服务, 如何实现接口呢? 根据OCI 分发规范文档 的描述, 已经对整个推拉过程中要调用的接口有描述了. 但是, 纸上学来…

何为布控球?布控球的分类对比

主要的分类有&#xff1a; 根据内部的主控板卡的系统分类&#xff0c;典型的是基于海思芯片的嵌入式LINUX系统的&#xff0c;一般出国标GB28181&#xff0c;另外一种是剑走偏锋的安卓系统的&#xff0c;需要把球机的输出YUV转换为UVC接入安卓主板&#xff0c;作为外接USB摄像头…

Java进阶—GC回收(垃圾回收)

1. 什么是垃圾回收 垃圾回收(Garbage Collection&#xff0c;GC)是Java虚拟机(JVM)的一项重要功能&#xff0c;用于自动管理程序中不再使用的内存。在Java中&#xff0c;程序员不需要手动释放内存&#xff0c;因为GC会自动检测并回收不再使用的对象&#xff0c;从而减少内存泄…

param参数

param参数介绍及使用 在 Web 开发中&#xff0c;param 是指路由中的参数&#xff0c;用于捕获 URL 中的动态部分&#xff0c;并将其作为参数传递给路由处理函数。当定义包含参数的路由时&#xff0c;可以使用 param 方法来捕获 URL 中的动态部分&#xff0c;并将其传递给路由处…

用户多部门切换部门,MySQL根据多个部门id递归获取所有上级(祖级)、获取部门的全路径(全结构名称)

背景 之前做过的项目&#xff0c;都是一个用户就一个部门的&#xff0c;现在碰到个一个用户在多个部门的需求&#xff0c;而且需要可以切换不同部门查看不同数据。 就比如说一个大公司下面有多个子公司&#xff0c;每个子公司有好多部门、子部门等等&#xff0c;然后有部分用…

chrome浏览器插件extension开发中content内容脚本和background脚本通讯

有时候我们想监听页面中的数据变化&#xff0c;然后将监听到的数据传递给background脚本处理&#xff0c;比如根据不同的数据&#xff0c;来处理不同的业务逻辑&#xff0c;存储到服务器&#xff1f;或者控制浏览器显示效果&#xff1f;都可以&#xff0c;问题的重点是怎么让co…

口袋条件下的Lead优化几何深度模型-Delete 评测

Delete (Deep lead optimization enveloped in protein pocket) 是一个基于口袋的&#xff0c;3D分子生成的&#xff0c;应用于lead优化过程中侧链修饰、骨架跃迁&#xff0c;linker设计&#xff0c;片段生长的几何深度学习模型。 一、模型介绍 Delete 模型是浙江大学侯廷军老…