我正在尝试从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();
}
}
}