Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





gestión de los recursos

Iniciado por divmas, 12 de Marzo de 2011, 07:25:59 PM

« anterior - próximo »

divmas

Buenas,

tengo una duda, de que manera puedo gestionar esos recursos que van cambiando en memoria y que no podria cargarlos de antemano en memoria.

Me explico, resulta que quiero ir mostrando una serie una de fotos que iran cambiando "en directo", habia probado de irlos cargando, mostrarlos y despues descargarlos con m_gfx.MAP_Unload(foto), al principio el sistema se muestra estable y no consume recursos pero con el tiempo, mucho tiempo por cierto, la memoria va aumentando en consumo y dejan de mostrarse por falta de recursos.

Gracias.

[EX3]

dx_lib32 no esta pensada para ir cargando y descargando recursos sobre la marcha, su manera optima para trabajar, en graficos sobre todo, es cargar todo lo que necesites usar y trabajar con ello. Por otro lado asegurate de que estas descargando correctamente lo que cargas en memoria por que es muy raro que en vez de liberar memoria te siga consumiendo, asegúrate de que estas pasando los identificadores correctos de los graficos que cargas y descargas.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

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

El_Chavo

me viene como anillo al dedo este tema.

quería preguntar algo parecido a esto y es que si con visual basic se puede liberar memoria de alguna manera, para las variables, es decir, si yo creo una variable de tipo integer, si existe alguna manera de romper el vínculo de dicha variable con la dirección de memoria que usa y vaciar dicha memoria de los datos.

Sé que para objetos se puede hacer Set Objeto = Nothing, pero para variables no funciona.
Más que nada lo pregunto por que tengo una matriz de udts (se trata del inventario de mi juego RPG) y cuando el jugador empieza otra partida después de la primera, tengo que usar un bucle para poner todos los elementos a cero.

[EX3]

#3
En cuanto declares una variable esta ya ocupa espacio le asignes valor o no, un integer por ejemplo siempre ocupara sus 2 Bytes en memoria este a cero o no. Los objetos es distinto por que son referencias a clases y objetos instanciados en memoria, no simples valores, de ahi que se tengan que liberar su referencia para destruir los recursos que ese objeto este usando (no es lo mismo un valor que una clase instanciada en memoria que puede tener mas variables y codigo ejecutandose).

Lo unico que os puede servir de algo es con arrays dinamicos el hacer un Erase <nombreArray>. La instruccion Erase destruira todo el contenido del array dejando el array completamente vacio, sin elementos, solo la declaracion del array para seguir usandolo. Si el array es estatico sencillamente dejara todos los elementos al valor por defecto del tipo de dato: integer = 0, string = "", object o cualquier tipo clase = Nothing.

Cita de: El_Chavo en 13 de Marzo de 2011, 05:00:08 PM
Más que nada lo pregunto por que tengo una matriz de udts (se trata del inventario de mi juego RPG) y cuando el jugador empieza otra partida después de la primera, tengo que usar un bucle para poner todos los elementos a cero.
Salvo que tu array sea estatico, que ahi te serviria la instruccion Erase, haz un Redim <array>(<numero_elementos>). Al hacer un Redim sin la clausula Preserve tu array tendra todos sus elementos sin inicializar, como si fueran nuevos. De esta forma te evitas tener que recorrer con un bucle el array asignando valores.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

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

El_Chavo

Cita de: [EX3] en 13 de Marzo de 2011, 09:40:10 PM
En cuanto declares una variable esta ya ocupa espacio le asignes valor o no, un integer por ejemplo siempre ocupara sus 2 Bytes en memoria este a cero o no. Los objetos es distinto por que son referencias a clases y objetos instanciados en memoria, no simples valores, de ahi que se tengan que liberar su referencia para destruir los recursos que ese objeto este usando (no es lo mismo un valor que una clase instanciada en memoria que puede tener mas variables y codigo ejecutandose).

Lo unico que os puede servir de algo es con arrays dinamicos el hacer un Erase <nombreArray>. La instruccion Erase destruira todo el contenido del array dejando el array completamente vacio, sin elementos, solo la declaracion del array para seguir usandolo. Si el array es estatico sencillamente dejara todos los elementos al valor por defecto del tipo de dato: integer = 0, string = "", object o cualquier tipo clase = Nothing.

Cita de: El_Chavo en 13 de Marzo de 2011, 05:00:08 PM
Más que nada lo pregunto por que tengo una matriz de udts (se trata del inventario de mi juego RPG) y cuando el jugador empieza otra partida después de la primera, tengo que usar un bucle para poner todos los elementos a cero.
Salvo que tu array sea estatico, que ahi te serviria la instruccion Erase, haz un Redim <array>(<numero_elementos>). Al hacer un Redim sin la clausula Preserve tu array tendra todos sus elementos sin inicializar, como si fueran nuevos. De esta forma te evitas tener que recorrer con un bucle el array asignando valores.

Salu2...

Vaya, es cierto, no sé cómo no se me ocurrió antes :-P
Gracias.
Un saludo.






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.