ฉันมีรหัสต่อไปนี้ซึ่งอ่านในไฟล์ต่อไปนี้ ผนวก \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());
}
ฉันลองอ่านในไฟล์ขนาด 400Mb และฉันเปลี่ยนพื้นที่ฮีปสูงสุดเป็น 2Gb แต่ยังคงให้ข้อยกเว้นฮีปหน่วยความจำไม่เพียงพอ มีความคิดอะไรบ้าง?