线上出现oom问题如何排查?
一.造成oom的原因?
1.一次性申请的数据太多,比如一次性获取的数据放到list过多,可以分页查询等
2.内存未释放,比如使用jdbc大量连接无法释放,线程池拒绝策略未抛出异常,使用submit等待返回结果一直被阻塞,导致对象一直无法被回收,(因为程序无法结束),可以抛出异常,或者使用池化技术解决。
3.本身资源不够
分配的堆内存不足够,jmap-head查看堆信息
二.如何定位?
1.系统已经挂掉如何处理?
提前设置 -xx:+heapDumpOnOutOfMemoryError -XX:HeapDumpPath=
使用Visual或者Jstack 分析工具倒入 dump日志 找到GCRoot-查看线程栈
定位到写了一个死循环
2.系统还未挂掉?
同样子导出dump文件,若不导出,更加难以定位 ,步骤同上
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧