读取大文件时出错java:java.lang.OutOfMemoryError:超出了GC开销限制

时间:2015-11-30 07:22:25

标签: java garbage-collection out-of-memory

我正在尝试从java中的csv文件中读取12M行的文件。每一行的格式为movieId1,MovieId2,SimilarityBetweenThem。 我想读取此文件并将内容放在HashMap中,其中键字符串的格式为Movie1,Movie2。

一切顺利,直到大约5,2M行,但在那一刻我得到了这个错误:

java.lang.OutOfMemoryError: GC overhead limit exceeded

我已经尝试增加堆大小,但它没有用。

以下是产生此类错误的代码:

        try {
                br = new BufferedReader(new FileReader(csvFile));
                String[] csvLine;
                while ((line = br.readLine()) != null) {
                    i++;
                    csvLine = line.split(cvsSplitBy);
                    //a=new CoupleMovieKey(csvLine[0],csvLine[1]);
                    similarities.put(csvLine[0]+","+csvLine[1],(csvLine[2]));
                    System.out.println(""+i);

                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (br != null) {
                    try {
                        br.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

0 个答案:

没有答案
相关问题