Podes probar con: http://pastie.org/224427
Probé esto para un aplicación que consume muchísima de la memoria disponible del sistema. Es un controlador que visita recursivamente a un árbol de directorios. Para cada archivo que encuenta (un .po que tiene traducciones) genera una lista de original/traducción que luego se itera y se mete en la base de datos. Probé con esto (MemoryProfiler) y parece que algunos hashes y strings no se liberan sino al final de la recursión. No sé si llamarlo un leak, porque de hecho la memoria es liberada al final, pero no en las iteraciones y eso que puse un ObjectSpace.garbage_collect por todos lados. Probé con el código que sigue y a cantidad de hash llega hasta 243 (arrancando en 7). ¿Alguien sabe por qué no se libera la memoria cuando el hash sale de scope? require 'MemoryProfiler.rb' def funcion h = Hash.new l = Array.new for i in [1,2,3,4] h[:izq] = "primero" h[:der] = "ultimo" l << h h = Hash.new end return l end def otra n for i in funcion print i[:der] + ' ' + n.to_s + ' ' + i[:izq] + "\n" $stdout.flush end end def recursiva n sleep 1 if n > 1 otra n recursiva n - 1 end end MemoryProfiler.start(:delay => 2, :string_debug => true) recursiva(60) sleep 10 Eduardo. _______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
