我們在csv文件中有大量數據。它有250萬行,每行有10個字段,我們正在嘗試爲每行準備hashmaps,然後將該hashmap添加到arraylist。添加hashmap和arraylist時outofmemory錯誤
由於大量數據拋出內存Java堆空間錯誤,我無法做到這一點。
但我的應用程序需要hashmap列表(我不想增加heapspace)。
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);
}
那麼,要保存大量的數據在內存中,你需要大量的內存。所以它要麼通過記錄來處理數據記錄,要麼將其全部保存在內存中並增加堆。那裏也沒有免費的午餐。 –