我有简单的程序,例如在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
是)
答案 0 :(得分:0)
pmap
实用程序,或只是为pid 123的进程读取文件/proc/123/maps
,为自己的进程读取/proc/self/maps
,为您提供详细的内存映射。然后,您可以忽略有关您不想测量的库的行。
尝试cat /proc/self/maps
了解更多...(它会显示该cat
命令的地图)。
它特定于Linux(可能不适用于Solaris或FreeBSD)。
还有更标准的getrusage系统调用(不区分共享库使用的内存与其他内存使用)。