我正在解析來自Internet的一些數據以創建一個ArrayList,其中每個政治家類都有一個字段HashMap。每個HashMap將包含132 * 150條目。在第164個地圖填充後,我得到了這個異常:java.lang.OutOfMemoryError:Java堆空間。 我想使用序列化來存儲這個大列表,以便將來使用它。 我應該如何繼續?我應該序列化政治人員實例而不是整個列表?有沒有其他最佳的方式來存儲這些數據? (如果需要)我正在將這些數據寫入文件。我認爲將數據存儲爲「作爲對象」以提高易用性。 一些代碼:java.lang.OutOfMemoryError:Java堆空間創建Myclass的長列表
private static void setVotiParlamentari(ParserOpenParlamento parser, ArrayList<Politician> politicianList){
for(Politician p : politicianList){
String filepath = System.getProperty("user.dir") + File.separator + "io_files" + File.separator + "info_parlamentari2";
String filename = File.separator + p.getName() + ".txt";
Iterator<String> votesIterator = parser.parsePoliticianVotes(p).iterator();
FileWriter w = null;
try {
w = new FileWriter(filepath+filename);
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter wr = new PrintWriter(new BufferedWriter(w));
while (votesIterator.hasNext()){
String vote = votesIterator.next();
// i.e. for String vote = 35521:08/11/2016:Favorevole:SCCI-MAIE Favorevole:APPROVATA:391
String tokens[] = vote.split(parser.getSplittingChar());
String idVote = tokens[0];
String dateVot = tokens[1];
String politicianVote = tokens[2];
String groupVote = tokens[3];
String result = tokens[4];
String difference = tokens[5];
wr.write(idVote+":"+dateVot+":"+politicianVote+":"+groupVote+":"+result+":"+difference+System.getProperty("line.separator"));
p.getVotazioni().put(Integer.parseInt(idVote), new Votazione(idVote, dateVot, politicianVote, groupVote, result, difference));
}
wr.close();
}
}
如果你能顯示你的代碼的[mcve]會更好。 –