无法存储大型2D数组。内存不足错误

时间:2019-04-10 09:51:38

标签: java heap-memory

我正在尝试使用从文件中读取的数据,使用2d的long数组创建大型图形。节点数为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] = 
                }
            }
        }
    }

0 个答案:

没有答案