Como posso liberar memória no linux

0

Quando uso o topo para ver o uso da memória, tenho 65gb de RAM, mas apenas 1,3gb de livre e o restante é mostrado como usado. Quando eu corri meu programa Ele dá erro de insuficiência de memória. Embora nenhum outro programa esteja usando a memória RAM restante de 63.7gb, ele está em espera. como posso libertar o ram não utilizado?

    
por user35153 25.04.2010 / 12:23

4 respostas

3

Muitas duplicatas para listar. Mas, resumindo, a memória está em uso como cache e buffers, e será liberada à medida que os aplicativos consomem mais memória real.

    
por 25.04.2010 / 12:32
2

Se você quiser que a memória não seja usada, retire-a do computador e coloque-a em sua mesa.

Há um mal-entendido comum de que a RAM livre é boa. Na verdade, cada byte de RAM livre representa uma falha do sistema para fazer uso efetivo dessa RAM. RAM livre não tornará seu sistema mais rápido.

Considere um cenário extremamente simplificado. Um programa é executado e, em seguida, é concluído. Seu sistema operacional tem duas opções:

1) Poderia tornar a memória que mantinha o programa livre. Isso requer uma operação específica para torná-lo livre e uma operação específica para permitir que ele seja usado novamente. E se o programa for executado novamente, ele precisará ser carregado do disco.

2) Não foi possível liberar a memória que continha o programa. Isso requer a operação no para torná-lo livre, mas uma operação específica pode ser necessária mais tarde para movê-lo para outro uso. E se o programa for executado novamente, ele não precisará ser carregado do disco.

Portanto, na maioria das condições, a opção 2 é uma vitória pura. Ele salva uma operação se a memória precisar ser usada para outra coisa (ela pode simplesmente mudar de um uso para outro em um passo, em vez de dois passos, um para liberá-lo e outro para torná-lo livre). E isso pode salvar o programa de ter que ser carregado a partir do disco, o que seria uma grande vitória.

Então, a versão curta é, você não quer RAM livre.

    
por 24.08.2011 / 10:50
1
dylan@oxide:~$ free -m
             total       used       free     shared    buffers     cached
Mem:           123        120          3          0         34         35
-/+ buffers/cache:         50         72
Swap:          243          0        243

A linha de buffers +/- é o seu uso real de memória. Qual programa você está tentando executar? É muito possível que não seja realmente falta de memória disponível, mas algum outro problema.

Você está, talvez, executando um sistema operacional de 32 bits no modo PAE nesta máquina? Seu aplicativo pode querer mais de 2 GB de espaço de endereço virtual, o que o PAE não pode fornecer. (Uma recompilação do kernel pode aumentar até 3GB, mas é melhor você ir para 64 bits se for esse o caso.)

    
por 25.04.2010 / 12:42
0

Tente:

echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

isso liberará instantaneamente muita memória.

    
por 20.08.2012 / 15:55