Serialization & ObjectOutputStream

diego
05 de Mayo del 2003
Buenas, tengo el siguiente problema: tengo que guardar gran cantidad de Objectos en un archivo y java me esta dando un error de memory overflow.
Por ejemplo:
OutputStream ostream = new FileOutputStream("test.tmp");
ObjectOutputStream out = new ObjectOutputStream();
for(int k=0;k<10000000;k++)
out.writeObject(new Integer(k));

La unica forma que encontre de solucionarlo es cerrando el ObjectOutputStream y creando uno nuevo que haga append sobre el mismo archivo (asi libera la memoria como se debe).

El problema con esto, es que al crear un nuevo ObjectOutputStream y guardar un nuevo Integer, se vuelve a guardar la descripcion del 'Integer' en el archivo (la cual YA existia en la escritura anterior)... y al recuperar los objetos del archivo, da error (pues se encuentra 2 veces con la descripcion de Integer).

Alguna idea?
Gracias,
Diego

fun_java
05 de Mayo del 2003
Mi consejo es que esos Integer los guardes en un vector, y ese vector sea el objeto que escribas en el flujo.

diego
05 de Mayo del 2003
El problema es que si uso un vector, este tiene que estar en memoria, y eso da memory overflow.

fun_java
05 de Mayo del 2003
Entoces conforme lo tienes despues de cada escritura usa [flujo].flush() que descargas el flujo de memoria y confirmas la escritura en el fichero

diego
05 de Mayo del 2003
Deberia probar denuevo, pero estoy casi seguro de que flush() no soluciona el problema.
Gracias de todos modos.