У меня есть следующий код, который читается в следующем файле, добавляет \r\n в конец каждой строки и помещает результат в строковый буфер:
public InputStream getInputStream() throws Exception {
StringBuffer holder = new StringBuffer();
try{
FileInputStream reader = new FileInputStream(inputPath);
BufferedReader br = new BufferedReader(new InputStreamReader(reader));
String strLine;
//Read File Line By Line
boolean start = true;
while ((strLine = br.readLine()) != null) {
if( !start )
holder.append("\r\n");
holder.append(strLine);
start = false;
}
//Close the input stream
reader.close();
}catch (Throwable e){//this is where the heap error is caught up to 2Gb
System.err.println("Error: " + e.getMessage());
}
return new StringBufferInputStream(holder.toString());
}
Я пробовал читать в файле 400 Мб, и я изменил максимальное пространство кучи на 2Gb, и все же он по-прежнему выдает исключение из кучи памяти. Любые идеи?