內存管理我在我的應用程序,它做了兩件事下面的代碼:堆大小問題 - 用java
解析其中有數據的「N」數字文件。
對於文件中的每個數據,都會有兩個Web服務調用。
public static List<String> parseFile(String fileName) {
List<String> idList = new ArrayList<String>();
try {
BufferedReader cfgFile = new BufferedReader(new FileReader(new File(fileName)));
String line = null;
cfgFile.readLine();
while ((line = cfgFile.readLine()) != null) {
if (!line.trim().equals("")) {
String [] fields = line.split("\\|");
idList.add(fields[0]);
}
}
cfgFile.close();
} catch (IOException e) {
System.out.println(e+" Unexpected File IO Error.");
}
return idList;
}
當我嘗試解析具有100萬行記錄的文件時,java進程在處理了一定數量的數據後失敗。我得到了java.lang.OutOfMemoryError: Java heap space
錯誤。由於提供了這些龐大的數據,我可以部分發現java進程會停止。請告訴我如何處理這些龐大的數據。
編輯:這部分代碼new BufferedReader(new FileReader(new File(fileName)));
將解析整個文件,並受到文件大小的影響。
恕我直言,我看到第一個選項不是解決方案,因爲我不能增加我的磁盤大小。目前我正在做第二個選項提到。感謝您的回覆。:) – Arun
@阿倫 - 是的,我試圖說清楚,選項1並不是真正的解決方案。那麼說,我不確定什麼磁盤大小與任何事情有關...? – jtahlborn
對不起,我的意思是我的prod盒上的java堆的大小,對此我沒有權限... – Arun