El día 29 de junio de 2008 18:05, Lucas Sallovitz
<[EMAIL PROTECTED]> escribió:
> 2008/6/29 Rafael Bidegain <[EMAIL PROTECTED]>:
>> cadena = "algo"
>> por
>> cadena.replace("algo")
>
> Si a tu programa "le da lo mismo" que la cadena antigua siga
> existiendo o no (ese código indicaría que si).
a mi programa le interesa el contenido del objeto cadena.
si yo no uso cadena.replace estoy creando un objeto nuevo con cada
asignacion del tipo cadena = "algo"
podes verificarlo con irb
irb(main):001:0> cadena="algo"
=> "algo"
irb(main):002:0> cadena.object_id
=> 23719830
irb(main):003:0> cadena="algo mas"
=> "algo mas"
irb(main):004:0> cadena.object_id
=> 23713040
irb(main):005:0> cadena.replace("otra cosa")
=> "otra cosa"
irb(main):006:0> cadena.object_id
=> 23713040
irb(main):007:0>> La cadena anterior > debería ser recolectada por el GC, el GC la debería recolectar en cada nueva asignación o al finalizar la ejecución del script? se me ocurrió contar los objetos para verificar esto. > lo que podés probar es forzar la > ejecución cada tanto, como ? > pero la otra posibilidad es que tengas un bug en > el programa y que las cadenas anteriores sigan referenciadas por otro > lado, con lo cual la memoria no se puede liberar. es posible, pero no creo. > Por otro lado que se apague la máquina porque un script ocupa mucha > memoria me parece raro. Eppur si muove :) > > Saludos. Lucas. saludos -- /* Rafael Bidegain Linux Registered User # 204304 CaFeLUG Grupo de Usuarios de Software Libre de Capital Federal http://www.cafelug.org.ar */ _______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
