Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/10/2013, 09:10
anthony20
 
Fecha de Ingreso: octubre-2013
Mensajes: 31
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Uso excesivo de memoria ram

Buenas tardes, muchísimas gracias por la ayuda MarronsDispatcher.

El código se encarga de recoger los datos que le llegan desde arduino y almacenarlos en su apartado correspondiente. Las únicas variables que interesan mantener del código son estas:
int datosa[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int datosb[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int datosc[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int datosd[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
int datosaa[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int datosbb[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int datoscc[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int datosdd[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

El resto de objetos y cosas que saturan la memoria se utilizan para reproducir en forma de texto o sonido los datos.

Otro apartado se encarga de reconocer la voz para volver a reproducir de forma sonora los datos.

Lo que más memoria ram consume es la carga y reproducción de sonidos:

Código:
sonido = minim.loadFile("xxo pxxxxx xe xx ases nxxxo" + ".mp3");
sonido.play();
El consumo es de unos 20-30 megas por oleada de datos.

No se como puedo hacer para que el recolector de basura lo elimine una vez reproducido. Es como si la referencia permaneciese aunque a continuación cargue otro sonido:

Código:
sonido = minim.loadFile("Nasiopalaalegria" + ".mp3");
sonido.play();


Lo que realmente quería hacer es programar reseteos automáticos del programa cada cierto tiempo y recuperar los valores de una base de datos.

Código:
int datosa[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 
  int datosb[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
  int datosc[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
  int datosd[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
  int datosaa[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 
  int datosbb[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  int datoscc[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  int datosdd[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
Aunque parezca mentira el programa hace lo que tiene que hacer sin aparentemente más fallos que el apetito voraz de memoria ram.

_________

He estado testeando las diferentes aplicaciones que ido haciendo y el reconocedor de voz genera un consumo de ram de 0,5mb/s

Aparentemente la recepción de datos aunque experimenta un incremento de ram inicial de unos 2-5mb finalmente se estabiliza y el programa se queda consumiendo simplemente 35 mb.

Intente arreglarlo poniendo
Código:
sonido = null;
pero no sirvió de nada.