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

Linux 如何在*nix中计算没有共享lib的进程内存?,linux,memory,time,time-measurement,Linux,Memory,Time,Time Measurement,我有一个简单的程序,例如C语言++ #include <iostream> int main() { int a = 1000; std::cout << a << std::endl; return 0; } #包括 int main() { INTA=1000; std::cout使用pmap实用程序,或者仅读取pid 123进程的文件/proc/123/maps,以及自己进程的文件/proc/se

我有一个简单的程序,例如C语言++

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

std::cout使用
pmap
实用程序,或者仅读取pid 123进程的文件
/proc/123/maps
,以及自己进程的文件
/proc/self/maps
,即可获得内存的详细映射。然后,您可以忽略不想测量的库的相关行

尝试
cat/proc/self/maps
以了解更多…(它显示该
cat
命令的映射)

它是特定于Linux的(可能无法在Solaris或FreeBSD上工作)


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

我知道
pmap
。在这种情况下,您想让我自己添加内存大小?解析行并只添加我需要的项?也许有更好的方法(如
time
util).我的意思是,我无法在程序运行时测量内存(因为我不知道程序将运行多少次)为什么要删除共享库所需的空间?为什么这个空间对您来说很特殊?我正在为ACM解决方案开发一个竞赛系统。我需要知道用户解决方案是否符合内存和时间方面的问题限制。如果用户解决方案与所讨论的类似,那么它的大小确实很小(11Kb)但是,当调用
printf
时,最大大小将是3.5MbLooks,就像GNU time刚才使用的
getrusage
调用或smth那样……因为cmdline args与struct字段相同。