Comunidad de diseño web y desarrollo en internet online

Dudas con el recolector de basura

Citar            
MensajeEscrito el 04 Feb 2009 03:21 am
Estoy leyendo varios temas sobre el recolector de basura. Hago cita de un comentario del foro:

escribió:

EN AS3 cualquier evento interno sigue funcionando independientemente si está o no en el DisplayList. Así cualquier clip con callbacks tiene que ser "limpiado" (removidos todos los listeners, timers, etc), antes de ser removido del DisplayList. Una vez removido, en la medida que no existan mas referencias a él es marcado para ser quitado de memoria en el próximo ciclo del Grabage Colector que no es manejable por código. Así, cuando queremos remover algo de memoria, debemos limpiarlo de eventos internos, quitar todas las referencias que existan a él y finalmente removerlo del DisplayList, esto lo hace elegible para ser removido de memoria, lo que no quiere decir que sea removida inmediatamente

Jorge


Esto quiere decir que, ¿tengo que eliminar todos los objetos/listeners,timers (?) para poder eliminar un objeto?. Por ejemplo, tengo una clase CTablero (ver aca: http://foros.cristalab.com/acceder-a-metodo-de-una-variable-creada-dinamica-t68049/), donde se cran varios objetos tipo CCasilla, para poder eliminar el mc de CTablero tengo que eliminar todos los objetos CCasilla que se crean apartir de este, y todos sus listeners de estas casillas, y los objetos (que se extienden de mc) que se creen en la clase CCasilla, aparte de los listeners de CTablero..

Que no lo tengo claro, saludos.

Por soullost

2 de clabLevel



 

opera
Citar            
MensajeEscrito el 04 Feb 2009 10:02 am
Si el scope de las referencias es interno de lo clase, es decir son todos elementos que componen CTablero, que es la clase que quieres eliminar, entonces lo consideras como un todo. Es decir si en la clase principal tienes algo como:

var myTab:CTablero = new CTablero()
myTab.addEventListener(......)

Esa referencia y ese listener tienes que quitar. De todas formas siempre conviene tener algún método destroy en tu clase que borre todos los recursos que está utilizando la clase. En el caso de las casillas, dado que eliminas el contenedor, también se elimina el contenido (siempre que desde fuera de CTablero no haya ninguna referencia a contenido interno)

Luego hay otras cositas, mírate http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.