Java OutOfMemory读取大型文本文件时出错
2022-09-02 11:08:57
我是Java的新手,正在阅读非常大的文件,需要一些帮助来理解问题并解决问题。我们有一些遗留代码,必须对其进行优化才能使其正常运行。文件大小只能从 10mb 到 10gb 不等。只有当文件开始超过800mb大小时,才会出现问题。
InputStream inFileReader = channelSFtp.get(path); // file reading from ssh.
byte[] localbuffer = new byte[2048];
ByteArrayOutputStream bArrStream = new ByteArrayOutputStream();
int i = 0;
while (-1 != (i = inFileReader.read(buffer))) {
bArrStream.write(localbuffer, 0, i);
}
byte[] data = bArrStream.toByteArray();
inFileReader.close();
bos.close();
我们收到错误
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2271)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
任何帮助将不胜感激?