私のアプリケーションには、2つのことを行う次のコードがあります。
'n'個のデータを持つファイルを解析します。
ファイル内のデータごとに、2つの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)));
ファイル全体を解析し、ファイルのサイズに影響されますか?