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

背景

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

分析过程

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

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

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

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

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

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

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

解决方案

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

相关推荐
程序员爱钓鱼6 分钟前
Go错误处理全解析:errors包实战与最佳实践
前端·后端·go
巫山老妖8 小时前
从零开发一个掘金自动发布 Skill,并上架 Clawhub
后端
颜酱9 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
雨中飘荡的记忆9 小时前
零拷贝技术深度解析
后端
uzong10 小时前
十年老员工的项目管理实战心得:有道有术
后端
Victor35611 小时前
MongoDB(31)索引对查询性能有何影响?
后端
Victor35611 小时前
MongoDB(30)如何删除索引?
后端
lizhongxuan12 小时前
多 Agent 协同机制对比
后端
IT_陈寒12 小时前
SpringBoot项目启动慢?5个技巧让你的应用秒级响应!
前端·人工智能·后端
树上有只程序猿13 小时前
2026低代码选型指南,主流低代码开发平台排名出炉
前端·后端