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

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

1 ответ

Решение

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

ulimit -s 8
Другие вопросы по тегам