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

Responder a