Как я могу уменьшить память, выделенную для данной программы от терминала?
то, что я имею в виду, - то, если у меня есть a a.out
исполняемый файл, как я могу заставить его работать в меньшей памяти от терминала (с использованием каких-либо специальных приложений)
$./a.out fooo
так, чтобы моя программа a.out работала очень на меньшем количестве пространства.
Насколько я знаю, Вы не можете строгим способом (если использование некоторой виртуальной машины или использование cgroups, который не так легок; Вы видите этот ответ от @muru.).
можно ограничить память, доступную с ulimit
, но это будет просто иметь эффект сообщения программы, что больше нет памяти при выполнении выделения или катастрофическом отказе его с сигналом, если оно не обрабатывает условие из памяти. Посмотрите:
zcat /var/log/syslog.2.gz
это работает, партия вывода
ulimit -d 100
ulimit -m 100
(Это ограничивает память для данных и для ядра к 100 КБ)
[romano:~] 2 % zcat /var/log/syslog.2.gz
/bin/zcat: xmalloc: .././subst.c:3542: cannot allocate 267 bytes (53248 bytes allocated)
, Но оболочка все еще в состоянии видеть всю память:
[romano:~] 2 % free
total used free shared buffers cached
Mem: 15340736 5148596 10192140 368776 284192 2794848
-/+ buffers/cache: 2069556 13271180
Swap: 31999996 0 31999996
Редактирование: больше информации в это сообщение unix.se .
Можно сделать это с эти ulimit
команда, вот, это страница справочника .