Anuncios Google

Limpiar memoria ram en Lua

Hola a todos me preguntaba cual era la orden para limpiar la memoria ram en lua, ojo no formatear la tarjeta de memoria sino limpiar (o formatear) la memoria ram. Gracias


Editado: Movido a Programacion, postear en el lugar incorrecto incumple las Normas de la Comunidad, antes de volver a postear por favor revíselas.| --Gomasz--|

 


PSP Slim TA-085v2 :OFW 3.72->3.80m33->3.90m33->4.01m33->5.00m33-6+Parche 5.00m33-7+5.00prometheus-3 v4+SNDC XMB mod->6.37ME-7->6.37ME-8->6.38ME->6.38ME-2->6.3ME-3->6.39ME->6.39ME-2->6.39ME-2 recovery fix->6.39ME-3->6.39ME-4->6.39ME-5->6.39ME->6.39ME-7->6.60ME-1.6

NDS Lite: Acekard2i v1.8.8        ¡¡¡CUIDEN LA ORTOGRAFÍA!!!
Sony xperia neo android 2.3.3 root
Galaxy nexus ICS 4.0.2 root
Wii negra v4.2E->HBC 1.0.8 (IOS58)+HerMes Mod (222,223,224,225,260)+D2X 7 Final (245,246,247,248,249,250)


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.

Bueno yo segun lo aprendido,

Bueno yo segun lo aprendido, hago esto 

imagen = image.load("ruta")-- aki la cargas

 

Con esto de abajo ya tienes liberada la ram, claro en luadev, xD!

imagen:free();

imagen = nil;

Imagen de -chus-

mmm

si hace eso, si no me equivoco le dará error, al intentar llamar imagen despues de hacer image:free(); de todas manera que pruebe, pero casi estoy seguro que le dará error o es una manera u otra XD


                                          Mis Homebrew´s

 http://psp.scenebeta.com/noticia/memorama-games#comment-803033


De hecho no daría error,

De hecho no daría error, porque no está llamando a la variable de imagen, sino que le está asignando otro valor (es como hacer sonido = sound.load y líneas más abajo poner sonido = 25)

Aún así, no le veo sentido al asignarle el valor de nil a la variable despúes de usar imagen:free(), porque ya valdría nil :P

Imagen de -chus-

mmm

oh es verdad, si fuera al reves habria error? es que no se por que pero tengo eso de que si da error no se por que XD creo necesito dormir XD


                                          Mis Homebrew´s

 http://psp.scenebeta.com/noticia/memorama-games#comment-803033


Si da error, yo lo uso por

Si da error, yo lo uso por ejemplo si voy de una funcion menu() a funcion juego() y no usare las imagenes pues la free() y nil y libero. luego cuando vuelva a menu pos se vargan  nuevamente y la uso, claro esta no las cargo en el WTD, las cargo dentro de la funcion pero antes del WTD.

funcion menu() 
  cargo imagenes
  while true do
    muestro imagenes
    si presiono x break
    flip()
   end
  imagenes:free()
  imagenes=nil
  juego()
end
 
funcion juego()
  cargo imagenes
  while true do
  muestro imagenes
    si presiono x break
    flip()
  end
  imagenes:free()
  imagenes=nil
  juego()
end
 
menu()

Algo asi

Imagen de sting18

Algo que me funciona a mi.

fondo = image.load("fondo.png")

jugador = image.load("jugador.png")

S_fondo = sound.load("fondo.mp3")

 

function Limpiar_Ram()

fondo = nil jugador = nil S_fondo = nil collectgarbage("collect")

end

Lo de arriba para luadev si usas HM7 es asi

function Limpiar_Ram()

fondo = nil jugador = nil S_fondo = nil System.memclean() collectgarbage()

end


Imagen de moikop

Pequeño comentario :P

Hasta donde sé, poner las variables que manejan las imágenes (objeto imagen? nunca entendí cual era el paradigma de Lua..). Es como si en C declaras una variable int y le das valor NULL. Seguirá ocupando los 16 bits de todas formas, ya que ese es el espacio que se le ha asignado al declarar la variable (supongo que Lua internamente funcionará de una manera similar, ya que el intérprete esta hecho en C..). collectgarbage no estoy seguro de qué haga...

Un saludo.


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.

No preguntes por MP, mejor pregunta aquí.

Imagen de Chimecho

Pos...

Lua, hace algo similar a java, todos los espacios de memoria que no tengan ninguna referencia, es decir, que ninguna variable apunta a este (eso hace variable = nil), es liberado por el recolector de basura que pasa cada cierto tiempo a revisar, claro que en lua puedes invocarlo con el collectgarbage, pero en sí, eso es lo que hace.

Otra cosa (para sting), por qué mejor no:

function Limpiar_Ram()
    fondo:free()
    jugador:free()
    S_fondo:free()
end

Porque eso de andar poniendo variables a nil, y pasando el collectgarbage teniendo free, lo veo algo... cutre =/

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de sting18

Cuando tienes razon , tienes razon xD.

Si esta hecho en C HM por lo que he visto usa librerias ajenas de las sdk y lua dev usa el sistema original basado en los antiguos 4.XX por lo que he visto para poder firmar un HB y que lo aga de la mejor manera tienes que tenerlo en 3.XX con PSP_HEAP_SIZE_KB(20480); entonces imagino que deviante a de ver usado algo parecido, no estoy muy apegado a C pero a veces ago pruebas para HB mejores, y si exactamente eso hace(lo que tu dices) y collectgarbage() en lua dev tiene icorporado el memclean y lo que hace es simplemente darle otra pasada a los archivos cargados puestos en NULL(C), nil(lua) y hacer una mejor limpieza (segun) aunque a veces en las psp fat tienes que incorporar "collect" dentro de collectgarbage() para que funcione, porque la verdad no sabria decirte eso no he revisado bien el SRC de los LUAplayers saludos moikop.


Imagen de Chimecho

um...

Lo normal sería poner siempre "collect" para que realice un ciclo completo de limpieza, aunque... no se, creo que cuando no se pone, este es el valor por defecto, pero no estoy seguro.

Para más información sobre los parámetros de collectgarbage: http://www.lua.org/manual/5.1/manual.html#pdf-collectgarbage



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Hasta donde mi ignorancia me

Hasta donde mi ignorancia me permite saber, no hay una instrucción que elimine todo lo cargado. Existe collectgarbage, pero no hace lo que tu quieres.

La mejor forma, en mi opinión, es la que te propone dioni. Nombra tus imágenes como imagen1, imagen2.... de tal manera que puedas cargarlas y descargarlas con un simple ciclo for.
Otra manera menos recomendable, pero funcional, es cargar tus imágenes en una tabla, y cuando ya no las necesites igualas la tabla a nil y pasas collectgarbage.

Imagen de barney77

Y darle un chute al Cpu, eso

Y darle un chute al Cpu, eso de que sirve man?

No entiendo a qué te refieres

No entiendo a qué te refieres :S

Imagen de barney77

os.cpu(XXX)

os.cpu(XXX)

A vaya... por qué no lo

A vaya... por qué no lo dijiste antes? xD

Pues sirve para modificar la velocidad del procesador, sencillamente :P

Imagen de Dioni0396

Si limpias o formateas la ram

donde cargas los archivos?

Lo que puedes hacer es limpiarla de imagenes que no necesitas con image.free() o de sonidos que ya no vas a necesitar con sound.free()

Imagen de Tu_yo

Sí, esa fué mi primera idea

pero cuando cambio de script y tenía pues... 50 imágenes cargadas no voy a screbir en el nuevo 50 veces Image.free...
Creo yo que es más rápido y cómodo limpiar la memoria ram cuando cambio de script ya que no necesito la cargadas y las nuevas se van a cargar despues de limpiarla.


PSP Slim TA-085v2 :OFW 3.72->3.80m33->3.90m33->4.01m33->5.00m33-6+Parche 5.00m33-7+5.00prometheus-3 v4+SNDC XMB mod->6.37ME-7->6.37ME-8->6.38ME->6.38ME-2->6.3ME-3->6.39ME->6.39ME-2->6.39ME-2 recovery fix->6.39ME-3->6.39ME-4->6.39ME-5->6.39ME->6.39ME-7->6.60ME-1.6

NDS Lite: Acekard2i v1.8.8        ¡¡¡CUIDEN LA ORTOGRAFÍA!!!
Sony xperia neo android 2.3.3 root
Galaxy nexus ICS 4.0.2 root
Wii negra v4.2E->HBC 1.0.8 (IOS58)+HerMes Mod (222,223,224,225,260)+D2X 7 Final (245,246,247,248,249,250)

Imagen de Dioni0396

con bucle for

for i=1,50 do

image.free(Imagen[i])

end

--Ya estarian las 50 borradas

50 imagenes? Como trabajas

50 imagenes?

Como trabajas :)

Salu2.

Imagen de pspgorrister

Apágala, es la forma más

Apágala, es la forma más eficiente de limpiarle la RAM.

Imagen de moikop

jajaja

Estoy seguro de que nadie tendrá una mejor respuesta que esta, ya que no existe mejor manera! xD

Imagen de Tu_yo

No hombre

¿Cómo vas a apgar la PSP en medio de un juego para limpiar la memoria ram y seguir jugando? Sé que hay una orden para hacer eso pero no sé cual es.


PSP Slim TA-085v2 :OFW 3.72->3.80m33->3.90m33->4.01m33->5.00m33-6+Parche 5.00m33-7+5.00prometheus-3 v4+SNDC XMB mod->6.37ME-7->6.37ME-8->6.38ME->6.38ME-2->6.3ME-3->6.39ME->6.39ME-2->6.39ME-2 recovery fix->6.39ME-3->6.39ME-4->6.39ME-5->6.39ME->6.39ME-7->6.60ME-1.6

NDS Lite: Acekard2i v1.8.8        ¡¡¡CUIDEN LA ORTOGRAFÍA!!!
Sony xperia neo android 2.3.3 root
Galaxy nexus ICS 4.0.2 root
Wii negra v4.2E->HBC 1.0.8 (IOS58)+HerMes Mod (222,223,224,225,260)+D2X 7 Final (245,246,247,248,249,250)

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.