排查一次类加载导致的OOM

news2024/11/18 13:27:30

问题背景

线上收到异常告警

在这里插入图片描述

查看监控发现应用从启动后metaspace的占用就一直在增长,增长到一定限制后,pod重启

在这里插入图片描述

排查过程

metaspace存储的是类的结构信息,一直在增长基本上是因为类一直被重复加载,无法被卸载掉
给应用加上启动参数

-XX:+TraceClassLoading -XX:+TraceClassUnloading

追踪这个应用在运行过程中类的加载和卸载信息,发现某几个接口运行的过程中会一直加载某个工厂类

[Loaded com.**.***.***.classA_classB_ObjectFactory302966803037648304096626598839$4336 from jar:file:/usr/local/app/app.jar!/BOOT-INF/lib/orika-core-1.5.4.jar!/]

从最后的jar包信息我们知道是orika-core的类,接下来从这几个异常的接口入手,开始看代码,有下面可疑代码

    private void insertMartMaterialMarketCorrelation(classA entity){
        ....
        MapperFacade mapperFacade = new DefaultMapperFactory.Builder().build().getMapperFacade();
        result = mapperFacade.map(entity, classB.class);
        ....
    }

推测可能是每一次请求这两行代码都会反射出一个classA和classB的组合类,且无法被回收,于是把这段代码提到类外面,作为静态资源后解决

public class C{
    static MapperFacade mapperFacade = new DefaultMapperFactory.Builder().build().getMapperFacade();
}

解决后metaspace平稳

在这里插入图片描述

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

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

相关文章

Kubernetes学习01

一、Kubernetes是什么 Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。Kubernetes是谷歌开源的容器管理集群管理系统,是Google多年大规模容器管理技术Borg的开源版本。 它可以在物…

MySQL查询今日、昨日、最近七天的数据

查询今日数据 sql语句: SELECT * FROM short_oper_log WHERE to_days(login_time) to_days(now());运行结果: 查询昨日数据 sql语句: SELECT * FROM short_oper_log WHERE DATEDIFF(login_time,NOW()) -1;运行结果: 额外…

【瑞幸咖啡小程序-同盾】

需要联系主页V 瑞幸咖啡小程序 登入需要过同盾滑块下单需要balckbox参数 测试 过滑块 登入发短信

一场马拉松沸腾一座城 | 2023天津马拉松亲历记

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 津津乐道的三位主播都参与了 10.15 的天津马拉松并顺利完赛,比赛的当天,半个公司…

Talk | 纽约州立宾汉姆顿大学博士生丁琰:开放环境中机器人的任务与动作规划

本期为TechBeat人工智能社区第541期线上Talk。 北京时间10月26日(周四)20:00,纽约州立宾汉姆顿大学博士生—丁琰的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “开放环境中机器人的任务与动作规划”&#xff0…

​ iOS自动混淆测试处理笔记

1 打开 ipa,导出ipa 路径和配置文件路径会自动填充 ​ 2 点击 开始自动混淆测试处理 自动混淆测试是针对 oc 类和oc方法这两个模块进行自动混淆ipa,并ipa安装到设备中运行,通过检测运行ipa包是否崩溃,来对oc类和oc方法进行筛选。…

高三高考免费试卷真题押题知识点合集

发表于安徽 温馨提示:有需要的真题试卷可联系本人,百卷内上免费资源。 感觉有用的下方三连,谢谢 ​ 。 免费版卷有6-60卷每卷平均4-30页 高三免费高三地理高三英语高三化学高三物理高三语文高三历史高三政治高三数学高三生物 付费版卷有1…

Linux文件描述符和打开文件之间的关系

简介 文件描述符和打开的文件之间似乎呈现出一一对应的关系。然而,实际并非如此。多个文件描述符指向同一打开文件,这既有可能,也属必要。这些文件描述符可在相同或不同的进程中打开。 要理解具体情况如何,需要查看由内核维护的…

安防监控项目---环境配置

文章目录 前言一、硬件平台二、软件平台三、开发环境配置流程总结 前言 书接上期,在这里呢还是需要强调一下项目环境的重要性,不论是在本次项目开发或者是在未来的项目开发中移植是非常重要的一项内容,作为开发者而言,需要考虑移…

拒绝拖延,从我做起!

拒绝拖延,从我做起! 如果有一件事,对你的未来很重要,千万不要说等以后再做,这是无限拖延的借口【等有时间再做】的真正含义是,闲得无聊再去做,意味着事情即不重要也不紧急该做的重要事情不做&a…

Qt扫盲-QFontInfo理论

QFontInfo理论 一、概述二、创建QFontInfo对象 一、概述 QFontInfo类提供了关于字体的一般信息,包括是否是加粗、是否是斜体、字体大小、字体名称等等,使用也非常简单,其实就是一个属性查询类而已。 QFontInfo类提供了与QFont相同的访问函数…

交叉熵函数和KL散度函数

交叉熵函数(Cross-Entropy Function)和KL散度函数(Kullback-Leibler Divergence Function)都是用来度量两个概率分布之间的差异或相似性的数学函数。它们通常用于概率分布的比较,尤其在信息论和机器学习领域中。 交叉熵…

海南三亚摩托车三维扫描尺寸测绘机车零配件改装逆向抄数3D打印手板-CASAIM

在摩托车制造过程中,摩托车的曲面多,尺寸大,传统的测量方式通过千分尺及三坐标测量仪进行测量,存在部分位置无法精确测量和效率相对比较低等问题,难以快速完成大尺寸结构复杂的零部件三维数据重建。 而借助CASAIM三维…

49个过程背诵方法

五大过程组:启规执监收 需要死记住,五个比较好记按照顺序启动规划执行监控结束 十大过程:整范进,成质源,疯(风)狗(沟)踩(采)人 过程数量&#x…

在线客服系统源码全端通吃版+完全开源可二开 带完整搭建教程

随着互联网的快速发展,在线客服系统已经成为企业与客户沟通的重要工具。然而,市面上的在线客服系统往往存在限制多、成本高等问题。今天罗峰给大家介绍一种在线客服系统源码全端通吃版,并附带完整的搭建教程。 在线客服系统源码可以为企业提供…

电脑自动关机是什么原因?解决方案全解析!

电脑自动关机是一个令人头疼的问题,它可能由多种原因引起,从硬件故障到软件配置错误。在这篇文章中,我们将深入探讨电脑自动关机是什么原因,并提供三种常见问题的解决方法。无论您是电脑新手还是有经验的用户,都可以从…

Cesium 展示——一键控制所有 label 的显隐

文章目录 需求分析需求 实现一键控制所有 label 的显隐 分析 步骤如下: 获取场景中所有的实体(entities)。 遍历所有实体,获取实体中的label对象。 设置 label 的 show 属性为 false 或 true,以控制其显隐。 具体实现代码如下: var entities = viewer.entities; //…

UE4 使用材质后期 制作玻璃有雨效果

效果展示,其实这是一个动画效果 以上为所有逻辑 拿到TexCoord给到Panner,Time和Speed都是通过下面计算而来,后面讲,再拿到时间和速度值过后,加上扰动值,最后取G值,因为雨事从上而下的动&#xf…

1465. 切割后面积最大的蛋糕 : 为何仅需处理相邻切割位(多语言题解)

题目描述 这是 LeetCode 上的 「1465. 切割后面积最大的蛋糕」 ,难度为 「中等」。 Tag : 「贪心」、「模拟」 矩形蛋糕的高度为 h 且宽度为 w,给你两个整数数组 horizontalCuts 和 verticalCuts,其中: horizontalCuts[i] 是从矩形…

JAVA知识框架及技术

Web应用,最常见的研发语言是Java和PHP。 后端服务,最常见的研发语言是Java和C/C。 大数据,最常见的研发语言是Java和Python。 可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术…