Как рассчитать память процесса без общих библиотек в * nix? - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть простая программа, например, на C ++

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

, и я пытаюсь вычислить использование памяти со временем GNU.Но в выводе "time" (в моем формате это не имеет значения) максимальный размер процесса в памяти рассчитывается с помощью libc.so, который имеет функцию printf (вызов std :: cout) и равен 3,5 Мб.
Есть ли способ рассчитать память процесса без загруженных общих библиотек?

UPD Я не могу этого сделать, пока процесс, память которого я хочу измерить, работает по нескольким причинам.Я спрашиваю, есть ли способ сделать это с помощью внешнего инструмента-оболочки (например, time is)

1 Ответ

0 голосов
/ 29 ноября 2011

Утилита pmap, или просто чтение файла /proc/123/maps для процесса pid 123 и /proc/self/maps для вашего собственного процесса, дает вам подробную карту памяти. Затем вы можете игнорировать строки, касающиеся библиотек, которые вы не хотите измерять.

Попробуйте cat /proc/self/maps, чтобы понять больше ... (отображается карта этой команды cat).

Это специфично для Linux (вероятно, не будет работать на Solaris или FreeBSD).

Существует также более стандартный системный вызов getrusage (который не отличает память, используемую совместно используемыми библиотеками, от другой памяти).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...