我从其他方法获得 ByteArrayInputStream 格式的非常大的文件(> 2.5GB)数据。我必须将此数据以 InputStream 格式传递给另一个方法。我编写了以下代码,它对较小的文件执行得很好,但对于大小超过 2GB 的大文件却失败了。
ByteArrayInputStream bais = null;
bais = method_Returns_FIle_In_ByteArrayInputStream_Format();
InputStream is = bais;
method_Where_To_send_Data_In_InputStream_Format(is);
但是我的代码本身在第二行中断,出现以下错误:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3236)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
已经尝试增加 Java 堆空间大小(-Xms 和 -Xmx)。
任何建议表示赞赏。