Em qualquer sistema operacional remotamente sofisticado, não há uma noção clara de quanto de memória um aplicativo específico usa ou quanta memória é gratuita. As principais fontes de complicações são:
- Se você tiver swap, você inclui espaço de troca livre na memória livre? Se você não fizer isso, qual o objetivo de trocar? Mas se o fizer, é provável que você sempre tenha muita memória livre, mesmo que o seu sistema esteja se debatendo (ou seja, trocando muito) devido à falta de memória RAM.
- Existem muitos usos para a memória. Os dois principais são memória alocada por aplicativos e memória dedicada a caches de disco. Esses dois geralmente têm a mesma ordem de grandeza em um sistema sem recursos. Se você contar apenas a memória que não é usada para qualquer finalidade, é normal ter muito pouco: os caches de disco não irão embora até que haja necessidade de memória. Mas se você incluir os caches de disco na memória livre, você pode pensar que pode preencher tudo com a memória do aplicativo, mas então irá se debater devido à falta de cache de disco.
- A memória compartilhada dificulta a contagem da parte da memória alocada para um aplicativo específico. A memória compartilhada inclui coisas como bibliotecas compartilhadas e caches de disco para arquivos que mais de um aplicativo abriu.
Assim, ambos os números que você reporta provavelmente estão corretos, apenas contando diferentes noções de "memória livre". (E free
informa vários números; você não disse qual deles é 647MB - na linha -/+ buffers/cache
, os caches de disco contam como memória livre, enquanto na linha Mem
eles não.)