Estoy leyendo en un archivo de texto usando FileInputStream
que coloca el contenido del archivo en una matriz de bytes. Luego convierto la matriz de bytes en una cadena usando una nueva cadena (byte).Análisis de archivos de texto en Java
Una vez que tengo la cadena que estoy usando String.split("\n")
a dividir el archivo en una matriz de cadenas y luego tomar esa matriz de cadenas y analizarlo haciendo una String.split(",")
y almacenar el contenido en un ArrayList.
Tengo un archivo 200MB + y se está quedando sin memoria cuando enciendo la JVM con 1 GB de memoria. Sé que debo estar haciendo algo correctamente en alguna parte, no estoy seguro de si la forma en que estoy analizando es incorrecta o la estructura de datos que estoy usando.
También tardo unos 12 segundos en analizar el archivo, lo que parece mucho tiempo. ¿Alguien puede señalar lo que puedo estar haciendo que me esté quedando sin memoria y qué puede estar causando que mi programa funcione lento?
El contenido del archivo se ve como se muestra a continuación:
"12334", "100", "1.233", "TEST", "TEXT", "1234"
"12334", "100", "1.233", "TEST", "TEXT", "1234"
.
.
.
"12334", "100", "1.233", "TEST", "TEXT", "1234"
Gracias
Aclare: ¿Está diciendo que está utilizando -Xmx1024m para iniciar su JVM y todavía obtiene un OutOfMemoryError? – duffymo
Usar un patrón compilado sería mejor (incluso distribuir su propia división de especialista). Pero parece que tienes muchos datos de objetos. –
duffymo, ese es exactamente el caso. Estoy configurando la JVM con -Xmx1024m y obteniendo OutOfMemoryError –