Problemas de memoria con la serializacion.

Rafael
08 de Marzo del 2005
Tengo una aplicacion que necesita guardar la informacion que le llega por el socket en un fichero, por si la aplicacion cae y tengo que recuperar un estado seguro. Esto lo hago mediante el serializado el objeto que guarda el mensaje qu he recibido. El problema esta en que esto empieza a consumir memoria y el GC no la libera. Si comento la linea del writeObject, el gasto de memoriade la aplicacion no sube nada lleguen los mensajes que lleguen.

Sabeis como puedo solucionar esto del serializado??


Gracias...

nkpevfqy
08 de Marzo del 2005
Si el objeto es muy grande, necesitaras aproximadamente el doble de memoria de la que ocupa el objeto (el objeto y su serializacion). Para que la VM no pete por falta de memoria, utiliza los argumentos -Xmx??? y ponle en megas la cantidad de memoria maxima para la VM. 256, 512, ... Despues de serializar, cerrar el fichero y eliminar la referencia al objeto, la memoria deberia liberarse. Puedes animar al GC para que actue antes llamando a System.gc();

Rafael
08 de Marzo del 2005
Ya he arreglado el problema.

Era cuestion de hacer un reset del objeto ObjectOutputStream. Se ve que guarda un buffer con los objetos serializados y hay que resetearlo de vez en cuando...


Gracias de todas formas.