记1次数据堆栈溢出
从线上服务器已获取到堆栈文件,java_pid28439.hprof。
一开始使用 [fastThread](https://heaphero.io/ft-index.jsp)在线分析工具,或者 [GCeasy](https://gceasy.io/index.jsp)。
但由于文件大小 > 1G,无法使用。
于是下载了JProfiler,试用10天。
发现 byte[]占用3200MB,内存占用共 4370MB。而服务器最大内存是4G,导致内存溢出。
查看最大对象:
分析最大对象引用:
使用选定对象:
传入引用:
右键显示节点详细信息,查看堆栈:
分析调用链,定位业务代码。 最后发现是一个Dubbo接口,根据id查询实体对象,id为空,导致根据 id in ids的条件不生效,查询的是全表数据,
表的数据量在150w左右,一次加载进内存,导致内存溢出。
解决:id为空,在服务层就直接返回,不请求到Mapper层。
另[JDBC 基本流程源码分析](https://segmentfault.com/a/1190000040580622)
Dubbo配置项参考手册: https://cn.dubbo.apache.org/zh/docs3-v2/java-sdk/reference-manual/config/properties/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南