Comunidad de diseño web y desarrollo en internet online

USO DE MEMORIA AIR+Reflect Proyect

Citar            
MensajeEscrito el 27 Ene 2008 06:31 pm
Hola, resulta que mi inquietud es que mi programa AIR que estoy desarrollando consume memoria cada vez mas y mas, sin parar, sube cada 4 mb. Explico mejor, utilizo AIR y el proyecto Reflect, no se si lo han visto, http://www.wietseveenstra.nl/blog/, mas especificamente http://www.wietseveenstra.nl/files/flex/ReflectionExplorer/v1_0/ReflectionExplorer.html, lo he adaptado sin grandes cambios para que sirva en mi aplicacion, sumandole al panel que usa como si fuera ventana un efecto parallel de blur y fade a la hora de cerrarlo, asi que cuando se crea la ventana(panel) lo agrego (addchild() ), y tambien se tiene que agregar el reflectionManager con addchild(), el reflection manager(el encargado de reflejar la imagen del panel ) tambien lo encapsulo en el panel, porque van a haber varias panel con efectos y tiene que ser independientes, en fin, cada vez que doy cerrar la ventana(panel), en su evento interno de close, utilizo this.parent.removchild(this), pero en vez de disminuir el uso de memoria el programa lo aumenta en 4 MB, y asi pasa, el reflection manager tambien lo quito con removechild. Alguna sugerencia en el uso de memoria o como quitar realmente componentes, alguan forma de llamar el garbage colector?

Por JATH24

9 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 28 Ene 2008 09:33 pm
Buenas,
has de tener en cuenta que con removeChild lo único que haces es quitarlo de la lista de visualización, pero el objeto sigue existiendo en memoria.

Por otro lado, tampoco debería aumentar 4 megas porque sí. ¿Seguro que no tienes nada "raro" en el código?

Y en cuanto al Garbage Collecto, leí que en AIR lo puedes invocar directamente, al contrario que en el Player del navegador. La verdad es que no lo he probado, pero prueba a mirar en google porque en principio se puede utilizar.

Un saludo

Por llops

294 de clabLevel

1 tutorial

 

Barcelona

firefox
Citar            
MensajeEscrito el 28 Ene 2008 10:48 pm
Si gracias por contestar, la verdad yo pienso lo mismo que tu con respecto de que hay algo raro, y no confiaba de a mucho que el removechild eliminara la instancia, porque en el close del evento miro si el panel es igual a null y sale falso, el codigo lo reorganize y recontraorganice, encapsulando los efectos en la clase Panel, eliminando cada listener posible porque segun he leido si en un listener existe aun con la referencia del objeto a que "escucha" la variable seguiria en memoria(aunque el mismo listener sea el mismo panel?, no creo, en java si elimino el panel y el mismo es su listener ahi se iria, pero por si acaso.. ), tambien coloco la propiedad useWeakReference a los listener en true, y nada, aun sigue comiendose los megas justo cuando hago close, inclusive hago this.reflectionManager.target=null; this.reflectionManager=null; this.closeEffect=null; dentro del panel que tiene que desparecerse, cabe anotar que el target del reflectionManager es el mismo panel, por si acaso, no quiero que la variable panel este en ningun lado, y aun asi nada!!. Lo de AIR le heche una investigada pero nada, sera buscar mas, porque ahora lo que hay de AIR son ejemplos basicos y tutoriales tipo hola mundo. Ah y por ultimo cuando minimizo el programa , su uso de memoria baja de 40 MB a 2 o 8 MB, sin embargo el uso general de la memoria no cae, si lo maximixo se vuelve a 16 Mb ,, es raro no? a que se debera?.

Por JATH24

9 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 30 Ene 2008 08:51 pm
El tema de los listeners es correcto, si te queda alguna referencia a un objeto, aunque este objeto esté destruido, sigue una referencia en memoria.

En general, para eliminar completamente un recurso deberías seguir estos pasos:
- Quitarlo de la displayList
- Eliminar todas sus referencias (listeners, etc)
- Eliminar el objeto

Una vez cumplidos estos requisitos se marca para que pueda ser eliminado por el Garbage Collector, pero no se puede forzar a que se recoja, lo administra internamente el player (menos en AIR, como comentaba).

Seguro que lo has hecho, pero prueba a aislar un único panel y ves siguiendo todas sus referencias, a ver si te dejas alguna por limpiar.

Por llops

294 de clabLevel

1 tutorial

 

Barcelona

firefox
Citar            
MensajeEscrito el 02 Feb 2008 05:46 pm
Pues ya pude invocar el garbage, igual que en java, System.gc( ), (como no se me ocurrio...), monitoreando la aplicacion con el profiler que trae el Flex Builder, puedo ver como si controla las instancia y elimina las que ya no se usan en el momento en que invoco el gc, pero me queda la duda es que el monitor de windows la memoria no baja, pero en el profiler si, tambien cabe anotar que ambas dan uso de memoria muy distinto, en windows da 40 megas y mas, y el profiler me muestra 4235 K, a quien le creo?

Por JATH24

9 de clabLevel



Genero:Masculino  

msie7

 

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