Как я могу уменьшить объем памяти минимального процесса Linux - PullRequest
7 голосов
/ 27 марта 2012

Рассмотрим следующую программу на языке 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 МБ системной памяти.

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

1 Ответ

10 голосов
/ 27 марта 2012

Уменьшение предела стека уменьшит объем памяти:

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