linux - 如何发现进程的内存泄漏?

标签 linux memory-leaks

我需要找出特定进程的内存使用情况。事实上,我需要找出我编写的应用程序中是否存在内存泄漏。我无法使用 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/

相关文章:

linux - 为什么没有分配给 pci 设备的 BAR 地址?

Python argparse 出现在 gc.garbage 中

ios - 进行 NSURLSession 调用并将图像加载到 NSImage 时发生内存泄漏

java - keycloak spring boot starter 内存泄漏

ios - 我的 for ... in 与 addObject 循环中的内存泄漏在哪里

linux - 在 X 窗口系统中重新映射 AltGr

c - 简单的Linux编程: File read not going well?

linux - 删除所有超过 60 天的目录及其文件,无论目录是否为空

Python:处理模块

c# - 即使在 Finalizer 运行后 FileSystemWatcher 内存泄漏