← 返回现象因果

📋 现象因果 — 总览对照表

原因 → 直接现象 → 最终后果 → 排查工具 → 易混淆项

分类原因直接现象连锁反应最终后果排查工具易混淆
💻代码死循环(while无出口)单核CPU 100%线程池占满服务假死jstackvs死锁:死循环"忙死"CPU满,死锁"等死"CPU空
💻代码死递归(无终止)栈帧叠加超出栈深度StackOverflowError异常堆栈vs OOM:死递归是栈溢出(内存不涨),OOM是堆溢出
💻代码大对象(查50万行)堆瞬间撑大+FullGCFullGC救不回OOM崩溃(瞬时)jmap+MATvs泄漏:大对象瞬时撑爆,泄漏慢慢涨
💻代码内存泄漏(只增不减)内存阶梯式涨后期频繁FullGC几天后OOMjmap+MATvs大对象:看曲线,泄漏像楼梯,大对象像尖峰
☕JVMFullGC频繁(老年代满)整体CPU偏高(非单核)每次FGC触发STW接口周期卡顿jstatvs死循环:FullGC整体偏高+周期卡,死循环单核100%
☕JVMOOM(堆满+GC放弃)堆100%回收不动OutOfMemoryError进程退出,服务挂HeapDumpvs FullGC:FullGC还活着(回收得动),OOM挂了
☕JVM死锁(互等对方锁)CPU不高(都在等)线程数飙升请求全超时jstack搜deadlockvs死循环:死循环CPU满忙死,死锁CPU空闲等死
🌐系统磁盘满(100%)No space刷屏日志/DB/MQ全写不了服务局部瘫痪df/du/lsof陷阱:rm正在写入的文件空间不释放
🌐系统CPU飙高CPU/load飙升所有请求变慢超时/级联top -Hp+jstack分根因:单核满=死循环;多核+GC=FullGC;多核+业务=计算密集
🌐系统网络超时/雪崩调用方线程卡等线程池满+用户重试级联全链路崩链路追踪根因不是下游挂,是自己没超时/熔断
高频混淆四组(面试必背):
死循环 vs 死锁:CPU满(忙死) vs CPU空(等死) — 看CPU高低区分
死递归 vs OOM:StackOverflow(栈,内存不涨) vs OOM(堆,内存爆) — 看异常类型
大对象 vs 泄漏:瞬时尖峰(几秒) vs 阶梯慢涨(几天) — 看Heap曲线形状
FullGC频繁 vs OOM:还回收得动(活着) vs 彻底回收不动(挂了)
现象因果 · 总览对照表 · 全栈资料库