linux pmap了解特定虚拟地址空间中运行的是什么

时间:2014-04-24 16:20:41

标签: linux memory-management memory-leaks pmap

我们正在进行某种巨大的内存泄漏,并且我们的进程的驻留内存呈指数级增长。

pmap -x显示如下内容:

...
00007f4ad85cd000 10530276 9129608 9129608 rw---    [ anon ]
....

这个负责泄漏的人

同样cat / proc // smaps显示的内容如下:

7f4b03dfb000-7f4d5b146000 rw-p 00000000 00:00 0
Size:            9817388 kB
Rss:             8547272 kB
Pss:             8547272 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:   8547272 kB
Referenced:      6971056 kB
Anonymous:       8547272 kB
AnonHugePages:         0 kB
Swap:              80732 kB
KernelPageSize:        4 kB
现在怎么样?接下来我可以做些什么来弄清楚可能导致问题的原因?如何进一步调试?没有核心,真正的旧代码 - 没有人知道在哪里添加日志。

我如何弄清楚7f4b03dfb000-7f4d5b146000的作用

1 个答案:

答案 0 :(得分:1)

您可以参考您的流程。这是您编写的程序,您可以控制和访问源代码吗?或者这是第三方提供的程序吗?

如果这是第三方程序,你别无选择,只能提交错误,并希望他们可以解决它。

如果这是您自己的代码,您将需要使用工具来调试内存泄漏。根据所使用的编程语言和库,您可以使用不同的工具。

其中一个工具是Valgrind