대용량 데이터가 csv 파일에 있습니다. 250 만 개의 행이 있고 각 행에는 10 개의 필드가 있으며 각 행에 대한 해시 맵을 준비하고 해시 맵을 arraylist에 추가하려고합니다.hashmap 및 arraylist를 추가 할 때 메모리 부족 오류가 발생했습니다.
엄청난 양의 데이터가 메모리 부족으로 인해 수행 할 수 없습니다. 자바 힙 공간 오류.
그러나 내 응용 프로그램에는 해시 맵 목록이 필요합니다 (힙 공간을 늘릴 필요가 없습니다).
reader = new CSVReader(new FileReader(dataFile),',');
Map<String, String> feedMap = null;
String[] firstLine;
String[] nextLine;
String mappingKey = null;
String mappingValue = null;
//Read one line at a time
firstLine = reader.readNext();
while ((nextLine = reader.readNext()) != null){
int i = 0;
feedMap = new HashMap<String, String>();
for(String token : nextLine){
mappingKey = xmlNodeMap.get(firstLine[i]);
if (mappingKey != null) {
mappingValue = token.trim().length() > 0 ? token : Constants.NO_VALUE;
feedMap.put(mappingKey, mappingValue);
}
i++;
}
listOfMaps.add(feedMap);
}
음, 많은 양의 데이터를 메모리에 저장하려면 많은 메모리가 필요합니다. 따라서 레코드별로 데이터 레코드를 처리하거나 메모리에 모두 저장하고 힙을 늘리십시오. 거기에 무료 점심도 없습니다. –