我需要找出特定进程的内存使用情况。事实上,我需要找出我编写的应用程序中是否存在内存泄漏。我无法使用 memfree
或 /proc/meminfo
因为我们的系统在 RAM 中安装了日志文件夹。
我经历过很多类似的查询,有些人建议使用 ps aux
命令。我有点困惑哪个参数给出了正确的内存使用情况,或者几个小时后可能出现内存泄漏。 PS AUX
给出 VSZ(虚拟内存)
和 RSS(驻留集大小)
。
我编写了一个示例程序,它分配 4 字节内存并取消分配它。运行程序后,分配内存时,VSZ
值似乎会增加,但在取消分配时,VSZ 值不会减少。但是 RSS 值显示正确,分配时增加,取消分配时减少。
有人可以确认使用RSS
值是否会指向代码中的内存泄漏量吗?或者还有其他方法吗?
最佳答案
要了解详细信息,您可以使用 pmap: pmap pid
root@tm# pmap 1216
1216: /usr/sbin/acpid
08048000 32K r-x-- /usr/sbin/acpid
08050000 4K rw--- /usr/sbin/acpid
08051000 4K rw--- [ anon ]
088f2000 140K rw--- [ anon ]
b7642000 4K rw--- [ anon ]
b7643000 1280K r-x-- /lib/i686/cmov/libc-2.11.3.so
b7783000 4K ----- /lib/i686/cmov/libc-2.11.3.so
b7784000 8K r---- /lib/i686/cmov/libc-2.11.3.so
b7786000 4K rw--- /lib/i686/cmov/libc-2.11.3.so
b7787000 12K rw--- [ anon ]
b7798000 8K rw--- [ anon ]
b779a000 4K r-x-- [ anon ]
b779b000 108K r-x-- /lib/ld-2.11.3.so
b77b6000 4K r---- /lib/ld-2.11.3.so
b77b7000 4K rw--- /lib/ld-2.11.3.so
bfd59000 84K rw--- [ stack ]
total 1704K
关于linux - 如何发现进程的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7143776/