内存不足,内存中的流

时间:2015-02-26 02:39:18

标签: android

当我使用非常大的文件时,错误发生在内存中,无法解决此问题,或者为什么不在下面的代码中发生?

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    //10*1024 = 10KB
    byte[] byteBuffer   = new byte[20*2048]; 

    int i = Integer.MAX_VALUE;
    while ((i = is.read(byteBuffer, 0, byteBuffer.length)) > 0) {

        baos.write(byteBuffer, 0, i);

    }

    return baos.toByteArray(); 

1 个答案:

答案 0 :(得分:1)

ByteArrayOutputStream定义“用于将内容写入(内部)字节数组的类的专用OutputStream。当字节写入此流时,字节数组可以扩展为容纳更多字节。写入被认为已完成,可以从类中请求字节数组的副本。“

您正在将Integer.MAX_VALUE * 10240字节写入内存。

您可能希望将标题更改为“写入内存中的内存流时内存不足”