Anuncios Google

Duda con RAM [Solucionado gracias a XERPI & RG]

EDITO: Gracias a Xerpi. Acabo de solucionarlo

Resulta que (Por ej):

RAM=10 Mb

a=image.load(ruta)

a:free()

RAM=9 Mb

 

-- no lo libera todo

-- Es necesario aplicarle collectgarbage()

 

Salu2 y muchas gracias ;)


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Para recuperar el pequeño

Para recuperar el pequeño porcentaje que queda sin liberar cuando usas image.free (pequeño si es 1 imagen, pero se va acumulando) usa collectgarbage("collect").

La manera ideal de usarla es: liberar imágenes, sonidos y objetos 3D con sus funciones nativas, el resto de variables que no vas a usar igualarlas a nil y pasar collectgarbage (puedes desarrollar una función que lo haga por ti, no sé xD).

Y claro, el consejo de siempre: no cargues imágenes en vano, sólo las que se van a ver en la pantalla. Asimismo, cuando una imagen salga de la pantalla libérala ;)

Imagen de DeViaNTe

Yo no sé qué manía con el

Yo no sé qué manía con el collectgarbage todos... xD

El último eboot que circula por aquí lo hace automáticamente... cada X ciclos. Además si al cargar algo no pudiera, repite el collectgarbage internamente y vuelve a intentar cargar. O sea, por más que pongais collectgarbage, son redundantes.

 

Un saludop.


Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es

Si, eso lo sé. Lo que no me

Si, eso lo sé. Lo que no me queda claro es cada cuánto lo hace, así que en casos extremos mejor darle un empujoncito xD

Imagen de jorge_97

By Jorge_97

Entiendo... Pero me temo que si le quitas a mi aplicacion collectgarbage() no funciona Xd.

Al pasar 5 minutos abriendo imágenes y tal se funde xD

Salu2


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de DeViaNTe

realmente lo probaste con el

realmente lo probaste con el último eboot eso? si es así, me tendré que fiar de ti, pero tengo el código delante, y luadev lo hace por tí.

while ( retries < 3 ) { image = .... if (!image) { lua_gc(L,LUA_GCCOLLECT,0); } else { break; } retries++; }  

Igualmente, aunque perdieras la variable, luadev la seguiría matando por tí al cabo del tiempo.

(Cuando digo perder digo: a = image.load(bla); a = true; perderíamos la referencia a la imagen y no podriamos liberarla... pero tranquilos, se hará en el proximo ciclo del colector de basura).

El colector de basura es configurable, pero viene con buenos valores por defecto.

El último eboot mejoró lo que no está escrito en temas de gestión de la memoria ram.


Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es

Imagen de jorge_97

By Jorge_97

No te fíes de mí...

Fíate de los TESTER que me reportaron el error y yo lo solucioné poniendo un collectgarbage()...

De todos modos ya está solucionado y quizá eso sea para hacerlo poco a poco... cada cierto tiempo.

Salu2

 


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Y una pregunta que me corroe desde hace muuucho...

Si haces un "superborrado" como mencionas en tu comentario, luego puedes volver a cargar la misma imagen usando la misma variable anterior??

Y por cierto, donde se debe hacer el image.free(), en un while o fuera??


 

 

Imagen de Dioni0396

Emmm....

Claro que la puedes cargar de nuevo.

image.free debes usarlo en una sentencia o un punto donde no vuelva a leerse a menos que la vuelvas a cargar

Si lo hicieras en el while a la primera lectura todo OK, pero a la segunda dira que falta la imagen a borrar.

Entiendo, y si después del image.free()

Entiendo, y si después del image.free() hago un break?

Imagen de Dioni0396

pues se saldra del bucle.

...

Imagen de jorge_97

By Jorge_97

Sí, lo he hecho todo como dices...

Pero no lo hice antes porque pensaba que free() liberaba la totalidad de un archivo.

Gracias a las PSP's fat me he dado cuenta que no es así.

Salu2 a todos


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de manolitico

Gracias

a la PSP de mi hermano, ¿esa es la "nueva forma de cargar" que te pregunté?

Imagen de jorge_97

By Jorge_97

Si xD

Gracias a ti.

Si supongo que será eso a lo que te refieres

Salu2 amigo

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.