现象本质:CPU密集型任务与内存使用模式的失衡
(可用"医院急诊室"类比:CPU是医生-满负荷接诊,内存是床位-大量空置)
一、首要排查方向(附测试工程师专属命令)
1. 线程堆栈分析
bash
复制
下载
# Linux/Mac(测试环境常用命令) top -H -p $(pgrep -f tomcat) # 查看线程级CPU占用 jstack $(pgrep -f tomcat) > thread_dump.txt # 抓取Java线程快照 # Windows测试工具 Process Explorer → 查看Tomcat进程线程详情
典型问题:
-
死循环(如日志组件疯狂轮询)
-
锁竞争(线程BLOCKED状态占比高)
-
算法缺陷(测试常见:未优化的加密/解密操作)
2. GC日志验证
bash
复制
下载
jstat -gcutil $(pgrep -f tomcat) 1000 # 每秒打印GC情况
关键指标:
-
Young GC频率高但每次回收量少 → 可能存在内存泄漏假象
-
Old区稳定在70%以下但CPU高 → 确认非内存问题