记一次Profiler生产实战内存分析(二)

背景

线上又有服务CPU爆高了呀,原因和上次(记一次JProfiler生产实战内存分析 - 掘金 (juejin.cn))一样,都是JVM频繁垃圾回收导致,dump下内存文件看看。

分析过程

打开dump文件,如下 基本可以看出,是RealData这个类太多 我们也可以直接从byte\[\] 数组开始出发进行分析

右键byte\[\]数组->使用选定对象->合并的传入引用 依次点开百分比最高的部分 最终发现1个实例来自于RealValueContext这个类 打开代码,搜索该类 发现里面有一个realDataList的属性,猜测应该是这个list中数据多导致。

右键选中该类->使用引用持有者->传出引用 查看当前对象的相关属性 这个对象有1600多M,这个list里面有1200W大小,原因找到。

分析一下代码,看看为啥会有这么多。 这个属性的使用是用来通过批量的方式,提高保存redis的效率。每次执行完定时任务后,该内存就会回收调,看来应该是这个定时任务没有执行导致的。

这个定时任务会在项目启动的时候就会初始化执行,那为啥会没有执行呢?

定时任务报错导致后续任务中断。

写一个demo试试 模拟异常情况 任务中断了。

解决方案

try catch一下 修改代码,上线,问题解决!

相关推荐
陈随易10 小时前
Postman 被曝自动往 Claude Code 和 Codex 装插件
前端·后端·程序员
AI你一生一世12 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影12 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯12 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
考虑考虑13 小时前
Posrgresql恢复.backup文件
数据库·后端·postgresql
无奈何杨14 小时前
风控决策系统决策流,策略模式,权重、顺序、投票、最坏
后端
Patrick_Wilson15 小时前
Go 为什么需要 defer?从函数怎么收尾说起
后端·go·编程语言
苏三说技术15 小时前
DeepSeek Harness入驻B站,评论区被干成了大型插件集市!
后端
橙序员小站15 小时前
我一句话让 AI 把公众号工作台搭完了:部署实测记录
后端
Patrick_Wilson15 小时前
从文本输出理解 Go 方法与接口
后端·go·编程语言