Как уменьшить объем памяти, занимаемый минимальным процессом Linux

Рассмотрим следующую программу C, 'pause.c':

void main() { pause(); }

Компиляция этого на x64 Linux 3.0.0-16-generic с использованием этой команды 'gcc -Os pause.c -o pause' создает исполняемый файл размером ~8 КБ. Когда я запускаю этот исполняемый файл и проверяю его точный объем памяти с помощью «pmap -d PID», он показывает мне, что частная память, выделенная для процесса, составляет 192 КБ (обычно в разных системах она варьируется от 128 КБ до 192 КБ).

Проверка процесса с использованием valgrind и massif не выявила каких-либо событий выделения памяти. Я скептически относился к тому, что цифра 192 КБ была точной, но я обнаружил, что запуск 5 экземпляров процесса «пауза» потребляет примерно 1 МБ системной памяти.

Я затрудняюсь объяснить происхождение этой памяти. Может ли кто-нибудь дать некоторое представление о том, почему эта память выделяется, и какие-либо потенциальные действия, которые могут ее уменьшить?

7
задан Gearoid Murphy 27 March 2012 в 10:23
поделиться