Boa tarde, estou com um problema de
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
ao fazer a leitura de um arquivo de aproximadamente 10 milhoes de linhas e com o tamanho
de quase 5 gb.
O estranho é que, ao apenas fazer a leitura eu não tomo erro, mas ao realizar um String.split na linha
eu tomo um erro de out of memory
private static boolean procuraOptico(String s){
String[] split = s.split( "\|" );
boolean isOptico = false;
if(split.length < 47){
System.err.println("Linha inválida: \n" +s);
isOptico = false;
}else{
if(split[47].equals("S")){
isOptico = true;
}else{
isOptico = false;
}
}
split = null;
return isOptico;
}
[code]
BigFile bigFile = new BigFile(arquivo);
System.out.println("Lendo arquivo...");
int i = 0;
int jFixo = 500000;
int j = jFixo;
Opticos opticos = new Opticos(350000);
for(String s : bigFile){
if(procuraOptico(s))
opticos.add(s);
if(++i == j){
System.out.println("Lidos: " + i + "|Opticos: " + opticos.quantidade);
j = j+jFixo;
}
}[/code]
ao comentar o trecho
if(procuraOptico(s))
opticos.add(s);
[/code]
eu paro de tomar o erro.
O erro sempre da quando ele esta por volta do 6.000.000, e aponta para o metodo split.
Alguma ideia?