У нас есть большие данные в csv-файле. Он имеет 2,5 миллиона строк, и каждая строка имеет 10 полей, и мы пытаемся подготовить хэш-карты для каждой строки, а затем добавим этот хэш-файл для arraylist.ошибка outofmemory при добавлении hashmap и arraylist
Я не могу этого сделать из-за огромных данных, которые он выбрасывает из памяти. Явная ошибка пространства Java.
Но моему приложению нужен список hashmap (я не хочу увеличивать кучу).
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);
}
Ну, чтобы хранить в памяти много данных, вам нужно много памяти. Таким образом, он либо обрабатывает запись данных по записи, либо сохраняет все в памяти, и увеличивает кучу. Нет бесплатного обеда. –