Не могу хранить большой 2d массив.Ошибка нехватки памяти - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь создать большой график, используя двумерный массив длин, используя данные, которые считываются из файла. Количество узлов равно 1000000, а количество ребер равно 7586063.0. Код ломается при создании 2d массива.

Это график, который должен запускать Dijkstra & FloydWarshell. График направлен Я пытался сохранить его как массив строк и не читать сразу весь файл.

Graph( String filename) throws IOException{
        File file = new File(filename);
        BufferedReader br = new BufferedReader(new FileReader(file));
        String sr;
        sr=br.readLine();
        size = Integer.parseInt(sr);
        sr=br.readLine();
        numOfEdges = Integer.parseInt(sr);
        System.out.println("Size = " + size + ". Number of edges " + numOfEdges);
        edges = new long[size][size]; // breaks here
        String[] tester;
        int count = 0;
        for(int i = 0; i < numOfEdges; i++) { // currect node
            tester = br.readLine().split(" ");
            tester = reparse(tester);
            for(int j =0; j < size; j++) { //j = currect line of lines.
                if(j == Integer.parseInt(tester[0])) { // if start at i
                    edges[j][Integer.parseInt(tester[1])] = Long.parseLong(tester[2]); // [i][end] = 
                }
            }
        }
    }
...