4
I’m not getting this error message. Someone understands and can help me?
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3210) at java.util.Arrays.copyOf(Arrays.java:3181) at java.util.ArrayList.grow(ArrayList.java:261) at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235) at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227) at java.util.ArrayList.add(ArrayList.java:458) at so.SO.main(SO.java:100)
My code
try {
try (FileReader arq = new FileReader(arquivo)) {
BufferedReader lerArq = new BufferedReader(arq);
String linha = lerArq.readLine();
num_processos = Integer.parseInt(linha);
String array[] = new String[3]; // array criado para determinar a quantidade de parãmetros a serem armazenados.
while (linha != null) { // Condição de saÃda do arquivo pois quando acabam as linhas o valor é null.
linha = lerArq.readLine();
if (linha != null) //Condição usada para verificar se está em uma linha vazia uma vez que somente o while ainda dava alguns erros.
{
quantidade_linha++; // Contador de linhas do arquivo "txt".
cont_caracter = 0; // Contador de caracteres.
if (quantidade_linha == 2) {
num_ciclos = Integer.parseInt(linha);
}
if (quantidade_linha > 2) {
PID++;
temporario = new Processos(); // instanciamento do processo temporário para que a cada linha seja registrado um novo.
temporario.inicializa(PID); // Método contido na classe de Processos para inicializar com "0" os valores do mesmo.
while (cont_caracter < linha.length()) { // Condição para chegada ao fim da linha.
array = linha.split(","); // Caracter usado para separamento usando o método split.
// Atribuir os valores ao processo temporário.
temporario.num_ciclos = (Integer.parseInt(array[0]));
temporario.entrada_saida = (Integer.parseInt(array[1]));
temporario.prioridade = (Integer.parseInt(array[2]));
cont_caracter++;
}
// Condição para determinar em qual lista o processo entratrá dependendo da sua prioridade.
if (temporario.prioridade == 0) {
prioridade0.add(temporario);
} else if (temporario.prioridade == 1) {
prioridade1.add(temporario);
} else if (temporario.prioridade == 2) {
prioridade2.add(temporario);
}
}
} else {
break;
}
}
while (!fim) {
for (i = 0; i < prioridade2.size(); i++) {
while (prioridade2.get(i).num_ciclos > 0) {
pronto.add(prioridade2.get(i));
}
}
for (i = 0; i < prioridade1.size(); i++) {
while (prioridade1.get(i).num_ciclos > 0) {
pronto.add(prioridade1.get(i));
}
}
for (i = 0; i < prioridade0.size(); i++) {
while (prioridade0.get(i).num_ciclos > 0) {
pronto.add(prioridade0.get(i));
}
}
fim = true;
}
System.out.println("FIM DA EXECUÇÃO!");
}
} catch (IOException e) {
System.err.printf("Erro na abertura do arquivo: %s.\n",
e.getMessage());
}
Add the code that is triggering this error to the question too by clicking EDIT.
– user28595
OutOfMemoryError
means you tried to use more memory than the Java virtual machine can handle.– Oralista de Sistemas