Si buscas cómo liberar memoria RAM en Linux, probablemente hayas visto comandos como free, sync o vm.drop_caches.
Pero antes de ejecutar nada hay una cosa importante que entender:
En Linux, normalmente no necesitas liberar la RAM manualmente.
El sistema operativo libera automáticamente la memoria de los procesos cuando estos terminan y también puede recuperar la memoria utilizada como caché cuando otra aplicación la necesita.
Por eso, que la RAM aparezca muy ocupada no significa necesariamente que haya memoria desperdiciada.
¿Cómo liberar RAM después de cerrar un programa?
No necesitas ejecutar ningún comando.
Cuando un proceso termina, el kernel recupera la memoria privada que utilizaba ese proceso.
Por ejemplo, si ejecutas una aplicación que consume varios gigabytes de RAM y posteriormente la cierras, esa memoria vuelve a estar disponible para el sistema.
Es posible que free siga mostrando una cantidad elevada de memoria utilizada. Esto puede deberse a que Linux está aprovechando parte de esa memoria para caché.
Eso es normal.
La memoria utilizada como caché puede recuperarse automáticamente cuando otro programa necesita RAM.
Por tanto, no es necesario limpiar la RAM después de cerrar programas pesados.
Entonces, ¿por qué Linux parece tener poca RAM libre?
Porque Linux intenta aprovechar la memoria disponible.
Una parte de la RAM puede utilizarse como caché de archivos y para otras estructuras del sistema. Mantener esos datos en memoria puede mejorar el rendimiento porque evita accesos innecesarios al almacenamiento.
Podemos comprobar el estado de la memoria con:
free -h
Por ejemplo:
total used free shared buff/cache available
Mem: 7.8Gi 2.5Gi 1.2Gi 450Mi 4.1Gi 4.5Gi
Swap: 2.0Gi 512Mi 1.5Gi
En este caso, tener solamente 1,2 GB en free no significa que solamente queden 1,2 GB de RAM utilizables.
La cifra especialmente interesante es available, que indica aproximadamente cuánta memoria puede utilizarse para nuevas aplicaciones sin necesidad de recurrir al swap.
¿Cómo puedo ver la memoria RAM en tiempo real?
Si quieres observar cómo cambia el uso de memoria, puedes utilizar:
watch -n 1 free -h
watch -n 1 ejecuta el comando cada segundo, mientras que free -h muestra las cantidades utilizando unidades fáciles de leer.
De esta forma puedes comprobar cómo evoluciona la memoria mientras abres o cierras aplicaciones.
¿Qué significa buff/cache?
La columna buff/cache incluye memoria utilizada por buffers y cachés del kernel. Una parte importante de esta memoria es recuperable.
Linux mantiene estos datos en RAM porque acceder a ellos desde la memoria es mucho más rápido que volver a leerlos desde el almacenamiento.
Esta memoria no queda bloqueada permanentemente.
Si una aplicación necesita más RAM, el kernel puede recuperar memoria de las cachés y asignarla al proceso.
Por eso:
Memoria utilizada como caché no significa memoria desperdiciada.
¿Se puede forzar la liberación de la caché?
Sí. Linux proporciona el parámetro vm.drop_caches.
Por ejemplo:
sudo sync
sudo sysctl -w vm.drop_caches=3
El valor 3 solicita al kernel que descarte page cache y objetos recuperables como dentries e inodos.
¿Esto libera RAM?
Puede reducir temporalmente la memoria que aparece ocupada por cachés, pero esa memoria ya era recuperable y no estaba desperdiciada.
Linux ya puede recuperar esas cachés automáticamente cuando necesita RAM.
Si las eliminamos manualmente, cuando el sistema vuelva a necesitar los datos tendrá que reconstruir las cachés, lo que puede provocar más accesos al almacenamiento y un peor rendimiento.
Por eso, no es recomendable ejecutar drop_caches periódicamente para “limpiar” la RAM.
¿Cuándo puede tener sentido drop_caches?
Tiene usos concretos, principalmente relacionados con pruebas, benchmarking y diagnóstico.
Por ejemplo, alguien que esté realizando una prueba de rendimiento puede necesitar descartar determinadas cachés para comparar resultados bajo unas condiciones concretas.
Para el uso normal de un ordenador o servidor Linux, no debería considerarse una herramienta de mantenimiento de la memoria.
¿Qué hacer si realmente falta RAM?
Aquí hay una diferencia importante.
Una cosa es tener poca memoria free y otra muy distinta es tener presión real de memoria.
Si el sistema se vuelve lento, empieza a utilizar intensivamente el swap o aparecen errores relacionados con falta de memoria, conviene averiguar qué está consumiendo la RAM.
Puedes utilizar:
free -h
y comprobar especialmente available y el uso de Swap.
También puedes utilizar:
top
o:
htop
Estas herramientas permiten identificar los procesos que están utilizando más memoria.
Si existe un proceso que consume cantidades anormales de RAM, la solución puede ser cerrarlo, reiniciarlo, corregir una fuga de memoria o investigar por qué está utilizando tantos recursos.
Vaciar las cachés no soluciona necesariamente ese problema.
¿Existe un comando para liberar RAM?
La respuesta depende de qué tipo de memoria estés intentando liberar.
Si has cerrado un programa: no necesitas hacer nada. El kernel recupera automáticamente la memoria del proceso.
Si la RAM aparece ocupada por cachés: normalmente tampoco necesitas hacer nada. Linux las recuperará cuando sean necesarias.
Si un proceso consume demasiada memoria: identifica el proceso y determina si debe cerrarse o investigarse.
Si el sistema utiliza mucho swap: investiga la presión de memoria y los procesos que la provocan.
Si necesitas realizar una prueba específica: drop_caches puede ser útil en determinadas circunstancias.
En resumen
- No es necesario liberar manualmente la RAM después de cerrar programas.
- Cuando un proceso termina, el kernel recupera su memoria privada.
- Que la RAM continúe apareciendo como utilizada no significa que esté desperdiciada.
- Linux utiliza RAM libre para cachés y puede recuperar esas cachés cuando necesita memoria.
availablees generalmente más informativo quefreepara valorar la memoria disponible.- No es necesario ejecutar
drop_cachesdespués de utilizar programas pesados. vm.drop_cachestiene usos específicos de pruebas y diagnóstico, pero no es una herramienta habitual de mantenimiento ni de optimización.- Si el sistema realmente tiene problemas de memoria, es mejor investigar los procesos que la están consumiendo.
La idea clave
En Linux, el objetivo no es tener la mayor cantidad posible de RAM libre, sino utilizar la RAM de forma eficiente.
Si buscas cómo liberar memoria RAM porque ves que el sistema tiene poca memoria “libre”, primero comprueba available. Si el sistema funciona con normalidad, probablemente no tengas que liberar nada.