Java - Error en Memoria

 
Vista:

Error en Memoria

Publicado por juan David (14 intervenciones) el 31/07/2007 17:32:36
hOLAS::

Lo que ocurre es que se me presento el siguiente problema analizando y procesando archivos de texto: me sale el siguiente error cuando el archivo de texto a analizar es grande, mas o menos de unas 30 Megas o más.. Exception in thread "main" java.lang.OutOfMemoryError, e investigado un poco acerca del asunto y se que existe el comando java -Xmx_m para aumentar la memoria para completar el procesamiento, pero la verdad no es una solución optima ya que al servidor en este momento ! no le cabe un tinto a cucharadas . El archivo se va leyendo linea a linea secuencialmente y compara cadenas contra un estructura de Strings, cuando las lineas corresponden, éstas se van guardando a una lista para posteriormente generar un archivo único de salida... pero cuando el archivo es muy grande... ya saben lo que ocurre.. Gracias por su atención y cualquier idea será bienvenida.

BufferedReader DataInput = new BufferedReader(Log);
LineasLeidas = new ArrayList();
String LineadeDatos;
while((LineadeDatos = DataInput.readLine()) != null)
LineasLeidas.add(LineadeDatos);

Cuando el archivo es muy grande se acaba la memoria para seguir leyendo: puse un catch y catch ( OutOfMemoryError e ) y ahy me sale el error.

Es necesario almacenar las lineas leidas en un arraylist... y pasa que esta estructura no alcanza a almacenar el numero de lineas entrantes.. se revienta en el proceso y no da la capacidad necesaria..El archivo es necesario leerlo hasta el final y secuencialmente.. el rollo en el que estoy pegado y es q debo decirle a la estructura la capacidad maxima de almacenamiento.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error en Memoria

Publicado por Tom (1831 intervenciones) el 31/07/2007 21:06:13
Parece que el ArrayList LineasLeidas te come toda la memoria.

¿ Por qué tienes que almacenar cada línea en memoria ? Intenta buscar otra forma de hacer lo que quieres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en Memoria

Publicado por juan david (14 intervenciones) el 01/08/2007 06:26:45
Eso es lo que estoy tratando de hacer, tu respuesta es tan obvia como insatisfecha, pero gracias por responder. Sigue así con esa gran labor que ayudaras a mucha gente....Pirovo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en Memoria

Publicado por angel (537 intervenciones) el 01/08/2007 08:25:08
Prueba a ponr este parámetro cuando ejecutas tu aplicación "-Xmx512M"
Yo uso esto cuando ejecuto mi aplicación, aunque yo ejecuto un ".jar" no un ".class" asi que no se si funcionará, pero supongo que si.
Este parámetro proporciona más memoria para tu aplicación, o eso creo recordar.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en Memoria

Publicado por angel (537 intervenciones) el 01/08/2007 08:29:13
Perdona, no habia leido bien tu mensaje, veo que ya habias visto lo del -Xmx.
Pues ntoncs no sabria que solución darte, quizas si el archivo s mayor que un tamaño, dividirlo n varios, y procesarlos por separado y cada vez que dejes d usar una variable igualarla a null para que sea considera basura por el recolector de basura de la maquina virtual.

No se si se le podra esablecer algo asi como el -Xmx pero desd codigo java una vez s inicia tu aplicacion.............

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar