Até onde eu sei, você não pode de maneira estrita (a menos que esteja usando algum tipo de máquina virtual ou usando cgroups que não é tão fácil; você pode ver esta resposta de @muru .).
Você pode limitar a memória disponível com ulimit
, mas isso simplesmente terá o efeito de dizer ao seu programa que não há mais memória ao fazer uma alocação, ou travá-lo com um sinal se ele não lidar com a saída condição de memória. Olhe:
zcat /var/log/syslog.2.gz
funciona, muito output
ulimit -d 100
ulimit -m 100
(Isto está limitando a memória para dados e para o núcleo para 100 kB)
[romano:~] 2 % zcat /var/log/syslog.2.gz
/bin/zcat: xmalloc: .././subst.c:3542: cannot allocate 267 bytes (53248 bytes allocated)
Mas o shell ainda consegue ver toda a memória:
[romano:~] 2 % free
total used free shared buffers cached
Mem: 15340736 5148596 10192140 368776 284192 2794848
-/+ buffers/cache: 2069556 13271180
Swap: 31999996 0 31999996
Editar: mais informações em este post do unix.se .