堆溢出解决思路 OOMJava 堆溢出java.lang.OutOfMemoryError: Java heap space现象‑Xmx 设置的最大堆内存被占满GC 反复回收回收后内存依然不够抛出堆溢出。一、定位步骤排查思路开启堆 dump发生 OOM 自动导出堆快照-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/xxx/heap.hprof程序 OOM 时自动生成 hprof 文件用 MATMemory Analyzer Tool(Eclipse 开源的内存分析工具专门分析 hprof 堆转储快照文件用来排查 Java 内存泄漏、堆 OOM)分析。MAT 分析 hprof 做三件事 ① 看大对象、支配树是谁持有大量对象是谁的引用链不让对象 GC。 ② 看对象数量哪个类实例数量异常暴涨。 ③ 找泄漏点对象本应该被回收但被 GC Roots 强引用死死抱住。区分两种完全不同情况内存泄漏Memory Leak对象不再业务使用但存在强引用无法 GC内存只涨不降。内存溢出Memory Overflow业务本身就需要这么多对象内存给小了没有泄漏。二、情况 1内存泄漏最常见对象不用了还被强引用持有无法 GC。常见泄漏场景集合List/Map全局 static只 add 不 remove全局集合不断累积对象。ThreadLocal 没有 remove ()线程池线程复用ThreadLocalMap 还持有对象引用。监听器、回调注册注销失败引用没释放。内部类持有外部类引用匿名内部类捕获外部对象。缓存没有设置淘汰策略没有 LRU、过期时间无限膨胀。解决不用的对象手动清除集合元素ThreadLocal 用完必须 remove缓存增加最大容量、过期淘汰Caffeine、Guava Cache及时注销监听器回调避免长生命周期对象持有短生命周期对象。三、情况 2没有泄漏业务确实需要大量对象堆内存配置过小例子一次性查询百万数据全部加载进 List全部放到内存。MAT 看对象都是业务正常需要的没有不该存活的对象。解决思路二选一调高‑Xmx 堆内存机器物理内存允许的前提下加大堆不要一次性全加载到内存做流式处理 / 分页分批读取、游标分页不要把全量数据装入 List使用迭代器逐条处理。坑select * from table查出几十万行封装进 List直接打爆堆属于业务写法问题不是泄漏。四、代码层面临时优化手段大对象尽量方法内局部变量方法执行结束无其他引用就可以 GC大集合用完置为listnull帮助 GC Roots 解除引用更多是可读性JVM 会自动识别避免在循环内疯狂 new 大量对象循环内尽量复用对象减少对象创建看业务。五、GC 角度分析观察 GC 日志-XX:PrintGCDetails如果看到YGC 频繁每次回收后可用内存很少频繁 Full GC内存几乎释放不下来 → 大概率内存泄漏。 如果一次性突增大量对象直接打满堆回收效果尚可只是瞬时需要内存大 → 业务数据量问题。

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/6 14:10:51
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/10/6 12:50:27
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/10/5 19:39:38
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/5 16:06:34
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 12:44:38
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/10/6 12:38:14

日新闻

周新闻

月新闻