I've simple program e.g. in C++
#include <iostream>
int main()
{
int a = 1000;
std::cout << a << std::endl;
return 0;
}
and i'm trying to calculate memory usage with GNU time. But in "time" output (with my format, it doesn't matter) maximum size of process in memory is calculated with libc.so which has printf function (call to std::cout) and is equal to 3.5 Mb.
Is there a way to calculate process memory without loaded shared libs?
UPD I can't do it while process, which memory i wanna measure, runs, for several reasons. I'm asking if there's a way to do it with outer wrapper tool (like time
is)
The pmap
utility, or just reading the file /proc/123/maps
for process of pid 123, and /proc/self/maps
for your own process, gives you the detailed map of the memory. You could then ignore the lines concerning libraries you don't want to measure.
Try cat /proc/self/maps
to understand more... (it displays the map of that cat
command).
It is Linux specific (probably won't work on Solaris or FreeBSD).
There is also the more standard getrusage system call (which don't differentiate memory used by shared libraries from other memory use).