首页/系统/Linux 内核与性能调优速查/应用内存泄漏定位(smaps 差分)
本包目录(357 条)
sysctl 内核参数72 条CPU 与调度60 条
内存与 OOM58 条
磁盘与 IO32 条网络栈调优98 条性能分析工具37 条

应用内存泄漏定位(smaps 差分)

对进程做 smaps_rollup 定期采样做差:anon/private 持续增长指向应用分配泄漏,file 增长多为缓存;再用 pmap 找具体增长段。

采样smaps_rollup 间隔 1-5 分钟连续取 3+ 次
判读anon 涨=分配;file 涨=映射缓存
下钻pmap -x 对比大段变化

采样脚本骨架

采样脚本骨架
for i in 1 2 3; do date; grep -E '^(Rss|Pss|Private_Dirty|Anonymous)' /proc/<pid>/smaps_rollup; sleep 60; done
sudo pmap -x <pid> | sort -k3 -rn | head

易错点

  • 先排除缓存与 GC 波动(注意采样窗口要跨过完整业务周期)
  • 托管语言的泄漏可能与堆内/堆外分类有关,需要与应用侧指标互证

数据来源与参考

  • Linux 内核 Documentation/filesystems/proc.rst
  • procps-ng 文档 pmap(1)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌