Linux 如何在*nix中计算没有共享lib的进程内存?
我有一个简单的程序,例如C语言++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
#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字段相同。