Foros - Stratos

Stratos => Flash/Flex => Mensaje iniciado por: [EX3] en 26 de Octubre de 2011, 01:33:10 PM

Título: Problemas liberando memoria en AS3 con Flex
Publicado por: [EX3] en 26 de Octubre de 2011, 01:33:10 PM
Wenas, gente.

Me estoy encontrando un problema en uno de los proyectos que estoy desarrollando en Flex con Flixel y es a la hora de liberar memoria al destruir objetos. Por mas que invoco en los objetos el metodo destroy() y lo asigno a null no logro que el consumo de memoria del juego baje, lo que a cierta altura nos tumba la aplicacion. Buscando encontre que como en Java y .NET se puede invocar al recolector de basura, pero resulta segun leo que solo funciona en modo debug, lo cual es una solucion a medias y que para colmo tampoco me esta reflejando resultados en modo debug :-/

Quizas este pasando algun tema por alto o se me escapa algo que no se, como se supone que se debe liberar memoria en AS3 con Flex?

Gracias.

Salu2...
Título: Re: Problemas liberando memoria en AS3 con Flex
Publicado por: [EX3] en 28 de Octubre de 2011, 08:05:47 PM
A ver si saco tiempo y le echo un ojo a esto que has colgado, por que me da que si no soluciono esto pronto me tocara reprogramar casi la mitad del juego :-/

Salu2...
Título: Re: Re: Problemas liberando memoria en AS3 con Flex
Publicado por: josepzin en 29 de Octubre de 2011, 07:58:59 AM
Estas cosas con AS2 no pasaban!  :p
Título: Re: Problemas liberando memoria en AS3 con Flex
Publicado por: mi-go en 13 de Febrero de 2012, 12:48:36 PM
Perdona por responder tan tarde, no había visto esto hasta ahora. Pero por si acaso no lo has solucionado todavía...

Haz lo que te dicen de revisar todas las referencias que pueda tener cualquier el objeto que quieres liberar, incluyendo listeners propios del objeto. Si no lo encuentras en código tuyo puede que tengas que mirar el código del motor Fixel, yo no lo conozco, pero igual guarda referencia a objetos cargados en una escena o algo así por el estilo, y después no los libera bien o no cuando tu quieres.

Otra cosa es que no esperes que la liberación sea instantánea nada más eliminar todas las referencias, eso dependerá de cuando el recolector de basura le de la gana de pasar y recogerlo  xD  Que no suele ser mucho según mis pruebas, pero que es totalmente incierto.
Título: Re: Problemas liberando memoria en AS3 con Flex
Publicado por: [EX3] en 13 de Febrero de 2012, 01:07:28 PM
Hey, gracias por la respuesta :)

Si, logre solucionarlo, aunque me toco reprogramar el core del juego con el sistema de gestion de estados que me ofrecia Flixel lo cual fue una chapuza monumental pero al menos asi si que funcionaban los destroy() de los objetos de Flixel liberando la memoria (se trata de un sistema de niveles por vistas estaticas de un plataformas, pantallas a lo Prince of Persia, y gestionarlo con el sistema de estados de Flixel lo complica demasiado).

Sobre lo de que no se libera la memoria instantaneamente, lo he podido comprobar con FlashPunk. Aqui si funcionan sin problemas los metodos para liberar la memoria de los objetos pero se nota que lo hace por bloques :)

Salu2...