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