Muchas veces cuando ejecutamos el comando top, nos sorprendemos con que tenemos libre, una cantidad mínima de memoria, a pesar de que en ese momento apenas tengamos unos pocos programas abiertos. Ello es debido a que el kernel gestiona y almacena el caché de las aplicaciones utilizadas anteriormente, para poder acceder a ellas más rapidamente, y reutilizarlas en cualquier momento, ya que el acceso al disco siempre es más lento.
En la inmensa mayoría de los casos esto no supone ningún problema, al contrario, es una manera inteligente de gestionar el sistema, porque en caso de ser necesario lanzar alguna nueva aplicación, se libería automáticamente esa memoria caché.
Pero también puede ser que necesitemos liberar caché de forma inmediata, bien porque queramos deshacernos de algunos procesos zombies o por cualquier otro motivo, para ello podemos en primer lugar medir el consumo de memoria en tiempo real (1 seg.) con el siguiente comando:
watch -n 1 free -m
Si os fijáis en la imágen tengo la memoria casi repleta, con mas de 2 GB de memory cached.
Ahora si quiero eliminar la memoria que no estoy usando tan solo tengo que ejecutar como root el comando:
sysctl -w vm.drop_caches=3
Ahora si vuelvo a ejecutar el comando inicial:
watch -n 1 free -m
vemos que la cosa ha cambiado sustancialmente, apenas 300 MB de RAM Cached.