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.
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?
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.
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.)
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.