【发布时间】:2013-11-18 17:03:20
【问题描述】:
我的系统上运行着一个守护进程(C 程序)。 当守护程序启动时,许多其他库会附加到此守护程序。
还有另一个用户进程在运行时使用此守护进程进行操作。
问题是在用户进程完成其操作后,当我看到该守护程序的 top 命令的输出时,我看到“RES”内存以 MB 为单位增加。 %mem 降低到我运行该进程之前的水平。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7456 root 20 0 73946 34m 3543 S 0 0.3 14:28.96 test_daemon
RES 值的增加是否预示着内存泄漏?
【问题讨论】:
-
RES的增加并不一定意味着内存泄漏,可能是加载动态库造成的。
-
你可以用
valgrind这样的东西来检查它 -
感谢大家的回复。但这种 RES 值的增加并不是固定的。有时它会超过 100 MB。我认为,如果是由于共享库加载,那么内存增加不应限制在某个值或固定。无论如何,如果任何库中有一些内存分配,那么它将增加该守护程序的内存消耗。我说的对吗?
-
运行 valgrind,您的所有问题都会得到解答,而不是仅仅通过查看顶部来猜测可能会发生什么。
-
我检查了 valgrind,它报告了大约 0.5 MB 的泄漏,这与 34MB 的 RES 值不一致。所以我猜RES中看到的34 MB可能不是泄漏。我的理解正确吗?
标签: c linux memory-leaks