Como posso reduzir a memória?

1

Como posso reduzir a memória alocada para um determinado programa a partir do terminal?

O que quero dizer é que se eu tiver um arquivo executável a.out , como posso executá-lo com menos memória do terminal (sem usar nenhum aplicativo especial)

$./a.out fooo

para que meu programa a.out seja executado em muito menos espaço.

    
por Dhanvi 26.08.2014 / 16:12

2 respostas

1

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 .

    
por Rmano 26.08.2014 / 21:01
0

Você pode fazer isso com o comando ulimit , aqui está é manpage .

    
por Jan 26.08.2014 / 16:22