| 场景 | 应用内存缓慢上涨 |
|---|---|
| 目标 | 区分泄漏/缓存/压力 |
| 工具链 | 定时采样 + 趋势比对 + 回归 |
采样脚本
采样脚本
for i in $(seq 1 24); do
echo "$(date -Is) $(awk '/VmRSS/{print $2}' /proc/$(pgrep -f app.jar | head -1)/status) $(awk '/MemAvailable/{print $2}' /proc/meminfo)"
sleep 3600
done | tee /tmp/mem-trend-$(date +%F).log分析
分析
awk '{print $2}' /tmp/mem-trend-*.log | sort -n | head # 观察单调性
# 若 RSS 阶梯下降后又长:多为缓存/GC 行为,不是泄漏Java 应用看堆(jstat/jcmd)与 RSS 两条线:堆稳而 RSS 涨多为堆外(direct buffer/线程栈/JNI)。