Рассмотрим следующую программу 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 МБ системной памяти.
Я затрудняюсь объяснить происхождение этой памяти. Может ли кто-нибудь дать некоторое представление о том, почему эта память выделяется, и какие-либо потенциальные действия, которые могут ее уменьшить?