Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problemas liberando memoria en AS3 con Flex

Iniciado por [EX3], 26 de Octubre de 2011, 01:33:10 PM

« anterior - próximo »

[EX3]

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...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

[EX3]

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...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

josepzin


mi-go

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.
Web personal: www.javiermairena.net
The Game Kitchen: www.thegamekitchen.com
AccessAble Games: www.accessablegames.com
Blog Videojuegos Accesibles: www.videojuegosaccesibles.es

[EX3]

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...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.