Como detectar memory leaks

Daniel Ripollés Climent ripolles en aditel.org
Mie Jun 11 14:55:30 CEST 2003


On Wed, Jun 11, 2003 at 01:09:12PM +0200, Antonio Beamud Montero wrote:
> Hola a todos:
> Tengo una aplicacion que corre en modo demonio, y que eventualmente
> pierde memoria, al principio no es un problema, pero al llevar un mes
> funcionando ya tiene el 80% de toda la memoria RAM.
> Alguien tiene experiencia en como depurar este tipo de aplicaciones, ya
> que he revisado el código pero no veo nada raro... existe algo como el
> memproof de C para python? (Creo que debe ser alguna libreria asociada
> pero no se como depurarlo)

_Creo_ que lo que hacen algunos programas que corren como demonios y han
de permaneces mucho tiempo en marcha es llevar algun tipo de contador
del tiempo que llevan ejecutándose (o de las iteraciones, o de cualquier
cosa que no sea demasiado difícil de contar), y al alcanzar cierto
valor, hacer un fork() a una copia de sí mismos y terminar. De esta
forma el programa X libera la memoria, pero el demonio "en sí" sigue
ejecutándose. Supongo que el tema se complicará bastante si ese demonio
va manteniendo datos y no quieres perdoerlos al hacer el fork (aunque
siempre puedes pasarlos con algun fichero temporal o algo asi...).

No sé, quizá pueda resultarte más sencillo que usar el modulo de garbage
collection, que supongo que no será trivial.

Pues nada, a ver si te sirve de algo :)
-- 
Daniel Ripolles ( Eru )
Make Source, Not War
for(0..pop){for($c=$_%2;$_>>=1;){$c=$_%2 .$c}print"$c\n"}




Más información sobre la lista de distribución Python-es