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
OutOfMemoryErrormeans you tried to use more memory than the Java virtual machine can handle.– Oralista de Sistemas