Es muy difícil, en general, por un proceso de "dar la memoria de vuelta al sistema operativo" (hasta que el proceso termina y el sistema operativo vuelva todo la memoria, por supuesto) porque (en la mayoría de implementación) lo malloc
los retornos están tallados en bloques grandes para mayor eficiencia, pero no se puede devolver el bloque completo si alguna parte de él todavía está en uso, por lo que la mayoría de las bibliotecas estándar C ni siquiera lo intentan.
Para una discusión decente en un contexto de Python, consulte p. Ej. here. Evan Jones solucionó algunos problemas específicos de Python como se describe en here y here, pero su parche está en el maletero desde Python 2.5, por lo que los problemas que está observando son definitivamente con el paquete malloc del sistema, no con Python per se. Una explicación específica de 2.6 es here y here.
Un SO hilo es here, donde Hugh Allen en su respuesta cita a los programadores de Firefox para extender que Mac OS X es un sistema en el que es básicamente imposible para un proceso de dar de nuevo a la memoria del sistema operativo.
Por lo tanto, solo al finalizar un proceso puede asegurarse de liberar su memoria. Por ejemplo, un servidor de larga ejecución, de vez en cuando, puede tomar una instantánea de su estado en el disco y apagarse (con un pequeño proceso de vigilancia, sistema o personalizado, vigilándolo y reiniciándolo). Si sabe que la siguiente operación requerirá mucha memoria durante un tiempo breve, a menudo puede os.fork
, realizar el trabajo de memoria en el proceso secundario y obtener resultados (si los hay) devueltos al proceso principal a través de un conducto como el proceso hijo termina. Y así sucesivamente y así sucesivamente.
¿Por qué esperas que baje? ¿Qué sistema operativo estás usando? En muchos sistemas operativos, una vez que un proceso ha adquirido memoria, el proceso se mantiene así. –
estoy usando mac osx 10.5, creo que más tarde comería más espacio. actualmente había crecido alrededor de 15MB más desde los 24MB en la etapa inicial. Creo que la memoria de proceso debería crecer en términos de MB, lo que podría afectar el tamaño de la memoria disponible. – herby