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

背景

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

分析过程

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

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

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

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

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

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

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

解决方案

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

相关推荐
神奇小汤圆19 分钟前
责任链模式 + 策略模式:优雅处理多级请求的方式
后端
神奇小汤圆23 分钟前
没啃透无锁队列,高并发底层你只懂了皮毛!
后端
大鸡腿同学1 小时前
大模型是怎么训练出来的?
后端
lizhongxuan2 小时前
判断一个人懂不懂 agent harness
后端
非洲农业不发达2 小时前
windows终端体验大升级,让你拥有macos级别的美化
前端·后端
妙码生花2 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十七):登录接口完善,登录页接口整合,解决跨域
前端·后端·ai编程
SamDeepThinking3 小时前
从源码到代码:MyBatis-Flex 与 MyBatis-Plus 的逐项对比
java·后端·程序员
shepherd1113 小时前
一文带你掌握 LLM、Token、Context、Prompt、RAG、MCP、Skill、Agent 等 AI 核心概念
人工智能·后端·ai编程
狂炫冰美式4 小时前
人均配了AI, 为什么公司还是没变快? 🤔 本质还是分布式系统问题
前端·后端·架构