Si / ¿Cuándo se recupera la memoria del montón desasignada?
He estado ejecutando pruebas de memoria durante la noche en un sistema Linux incorporado. Usando vmstat he observado que la memoria libre disminuye constantemente con el tiempo. Segun algunossmaps análisis enprocfs, el montón de un proceso crece aproximadamente a la misma velocidad. Sospeché una pérdida de memoria y encontré algunos puntos en el código dondenew
ydelete
se utilizan regularmente. Sin embargo, no vinew
llamadas sin coincidirdelete
llamadas
Corrí la prueba de memoria nuevamente y esta mañana borré los cachés de memoria con la siguiente llamada
echo 3 > /proc/sys/vm/drop_caches
La memoria libre listada en vmstat se redujo a un valor cercano a cuando se inició la prueba.
¿El kernel recupera regularmente las páginas del montón no utilizadas? Si es así, ¿hay otras veces además de la anterior que se hace esto? ¿Probablemente cuando la memoria libre esté por debajo de un cierto umbral?