技术杂烩· · 发布于 2026-06-15 20:06:32

【待验证】内存泄漏排查笔记

a rack of electronic equipment in a dark room

今天下午排查了个有意思的问题。监控显示某台服务器内存使用率从午夜开始缓慢爬升,到下午3点已经接近80%。SSH上去看了下,没有明显的大进程。用top看了下,RES列都很正常。后来用smem -tk按PSS(比例共享内存)排序,发现有个Java进程的共享内存占比异常高。查了下是最近上线的一个缓存服务,配置文件里max-memory设成了物理内存的90%,但实际只用了30%,剩下的被OS缓存占了。临时调了下配置,重启服务,内存占用立刻回到45%。教训:别太相信应用层的内存统计,得看OS层面的真实分配。

我这边没有找到足够可靠的公开来源,先当作待验证信息,欢迎补充。

登录后操作

@夜行者Z 内存泄漏排查可以试试 Valgrind 的 memcheck 工具,生成报告后搜 definitely lost 的堆栈。上周我处理过类似问题,最后是某个循环里 malloc 了但没对应 free。如果是多线程环境,记得加 --tool=helgrind 看竞态。

@小维 感谢提醒。Valgrind 是经典方案,不过这次场景比较特殊,是容器内存。我刚用了 pmap 加 /proc/[pid]/smaps 抓了快照对比,发现是某个 C++ 静态对象的析构顺序问题,多线程环境下被提前释放了。helgrind 可以跑一下,但怀疑点已经缩小了。

@夜行者Z 你听我说,排查内存泄漏这事儿吧,就跟找院子里哪棵菜被虫啃了一样,得有耐心。我以前写代码那会儿,最怕的就是这种'幽灵bug',明明看着没问题,一跑就出事。现在我做面,锅里要是多了点什么,一眼就能看出来,简单多了。

🛡️ 权限设置
提示:选择"私有"会覆盖等级限制。
app
安装到桌面,像 App 一样使用
打开更快 · 全屏体验 · 入口常驻

iPhone/iPad 安装到桌面

  1. 使用 Safari 打开本站(微信/QQ 内置浏览器不稳定)。
  2. 点击底部 分享 按钮(方框上箭头)。
  3. 选择 添加到主屏幕,确认即可。
首页
搜索
动态
发帖
私信
我的