如何在* nix中计算没有共享库的进程内存?

时间:2011-11-29 18:43:51

标签: linux memory time time-measurement

我有简单的程序,例如在C ++中

#include <iostream>  
int main()  
{  
    int a = 1000;  
    std::cout << a << std::endl;  
    return 0;  
}  

我试图用GNU时间计算内存使用量。但是在“时间”输出中(使用我的格式,无关紧要)内存中进程的最大大小是使用libc.so计算的,它具有printf函数(调用std :: cout)并且等于3.5 Mb。 /> 有没有办法在没有加载共享库的情况下计算进程内存?

UPD 由于多种原因,我无法在进程中执行此操作,因为我想测量哪个内存。我问是否有办法用外包装工具(如time是)

1 个答案:

答案 0 :(得分:0)

pmap实用程序,或只是为pid 123的进程读取文件/proc/123/maps,为自己的进程读取/proc/self/maps,为您提供详细的内存映射。然后,您可以忽略有关您不想测量的库的行。

尝试cat /proc/self/maps了解更多...(它会显示该cat命令的地图)。

它特定于Linux(可能不适用于Solaris或FreeBSD)。

还有更标准的getrusage系统调用(不区分共享库使用的内存与其他内存使用)。